You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
public final Subscription subscribe(final Action1<? super T> onNext, final Action1<Throwable> onError) {
if (onNext == null) {
throw new IllegalArgumentException("onNext can not be null");
}
if (onError == null) {
throw new IllegalArgumentException("onError can not be null");
}
return subscribe(new Subscriber<T>() {
@Override
public final void onCompleted() {
// do nothing
}
@Override
public final void onError(Throwable e) {
onError.call(e);
}
@Override
public final void onNext(T args) {
onNext.call(args);
}
});
}
@mttkay Sure this error, I use Retrofit, RxJava, RxAndroid on Android, when invoke NoConnectionException, the app crash. please fix.
private class APIErrorHandler implements ErrorHandler {
@Override
public Throwable handleError(RetrofitError cause) {
if (cause.getKind() == Kind.NETWORK) {
if (cause.getCause() instanceof SocketTimeoutException) {
return new ConnectionTimeoutException();
} else {
return new NoConnectionException();
}
}
}
E/AndroidRuntime(22087): Process: com.oxa7.shou, PID: 22087
E/AndroidRuntime(22087): java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
E/AndroidRuntime(22087): at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:52)
E/AndroidRuntime(22087): at android.os.Handler.handleCallback(Handler.java:739)
E/AndroidRuntime(22087): at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(22087): at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(22087): at android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime(22087): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(22087): at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(22087): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E/AndroidRuntime(22087): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
E/AndroidRuntime(22087): Caused by: rx.exceptions.OnErrorNotImplementedException
E/AndroidRuntime(22087): at rx.Observable$31.onError(Observable.java:7069)
E/AndroidRuntime(22087): at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:154)
E/AndroidRuntime(22087): at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:111)
E/AndroidRuntime(22087): at rx.android.operators.OperatorConditionalBinding$1.onError(OperatorConditionalBinding.java:66)
E/AndroidRuntime(22087): at rx.internal.operators.NotificationLite.accept(NotificationLite.java:147)
E/AndroidRuntime(22087): at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:177)
E/AndroidRuntime(22087): at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.access$000(OperatorObserveOn.java:65)
E/AndroidRuntime(22087): at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:153)
E/AndroidRuntime(22087): at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)
E/AndroidRuntime(22087): ... 8 more
E/AndroidRuntime(22087): Caused by: xxxx.api.BaseAPI$NoConnectionException
E/AndroidRuntime(22087): at xxx.api.BaseAPI$APIErrorHandler.handleError(BaseAPI.java:86)
E/AndroidRuntime(22087): at retrofit.RxSupport$2.run(RxSupport.java:59)
E/AndroidRuntime(22087): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
E/AndroidRuntime(22087): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(22087): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/AndroidRuntime(22087): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/AndroidRuntime(22087): at retrofit.Platform$Android$2$1.run(Platform.java:142)
E/AndroidRuntime(22087): at java.lang.Thread.run(Thread.java:818)
Activity
mttkay commentedon Nov 24, 2014
Have you tried doing what the message suggests, add an
onErrorhook? You probably subscribed without an error hook, and an error occurred...crossle commentedon Dec 5, 2014
Added
onErrori used this functionmttkay commentedon Dec 5, 2014
There is nothing actionable here for me. Can you add more context? What is it you're trying to do?
crossle commentedon Dec 9, 2014
I no reproduce this error, only on Google play crash log.
mttkay commentedon Dec 9, 2014
That doesn't help me.
crossle commentedon Dec 22, 2014
@mttkay Sure this error, I use Retrofit, RxJava, RxAndroid on Android, when invoke NoConnectionException, the app crash. please fix.
zsxwing commentedon Dec 22, 2014
@crossle could you provide the operators related to this bug?
hamidp commentedon Dec 22, 2014
@crossle
Your
APIErrorHandlerthrows. Think ofonErroras your catch. If you throw inside a catch what happens?crossle commentedon Dec 22, 2014
I use like this
@hamidp Catch
onError?hamidp commentedon Dec 22, 2014
Where's your
APIErrorHandlerreferenced?crossle commentedon Dec 22, 2014
crossle commentedon Dec 23, 2014
@mttkay please reopen this issue.
@hamidp @zsxwing How about this issue?
crossle commentedon Dec 24, 2014
@JakeWharton Look like Retrofit error.
luccasmaso commentedon Sep 17, 2015
@crossle did you fix it?
crossle commentedon Sep 18, 2015
@luccasmaso No
AndreiD commentedon Dec 7, 2015
remove the APIErrorHandler and call it like this:
I'm using: