Rxjava: [1.2.0]Caused by: rx.exceptions.OnErrorNotImplementedException: HTTP 500 Internal Server Error

Created on 3 Aug 2017  路  2Comments  路  Source: ReactiveX/RxJava

when i use retrofit+rxjava+rxCalladapter, foud error here :

08-03 17:12:50.864 18778-18809/com.xuebansoft.xinghuo.manager E/AndroidRuntime: FATAL EXCEPTION: RxIoScheduler-2
Process: com.xuebansoft.xinghuo.manager, PID: 18778
java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:57)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:841)
 Caused by: rx.exceptions.OnErrorNotImplementedException: HTTP 500 Internal Server Error
    at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386)
    at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383)
    at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44)
    at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:152)
    at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:115)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:276)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:219)
    at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:228)
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)聽
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)聽
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)聽
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)聽
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)聽
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)聽
    at java.lang.Thread.run(Thread.java:841)聽
 Caused by: retrofit2.adapter.rxjava.HttpException: HTTP 500 Internal Server Error
    at retrofit2.adapter.rxjava.BodyOnSubscribe$BodySubscriber.onNext(BodyOnSubscribe.java:51)
    at retrofit2.adapter.rxjava.BodyOnSubscribe$BodySubscriber.onNext(BodyOnSubscribe.java:36)
    at retrofit2.adapter.rxjava.CallArbiter.deliverResponse(CallArbiter.java:115)
    at retrofit2.adapter.rxjava.CallArbiter.emitResponse(CallArbiter.java:97)
    at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:46)
    at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:24)
    at retrofit2.adapter.rxjava.BodyOnSubscribe.call(BodyOnSubscribe.java:33)
    at retrofit2.adapter.rxjava.BodyOnSubscribe.call(BodyOnSubscribe.java:25)
    at rx.Observable.unsafeSubscribe(Observable.java:10151)
    at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
    at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:228)聽
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)聽
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)聽
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)聽
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)聽
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)聽
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)聽
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)聽
    at java.lang.Thread.run(Thread.java:841)聽

and the running code is here:

    ManagerApi.getIns().updateChannelInfoForMobileUser(AppHelper.getIUser().getMobileUserId(), ((XhEvent.BindEvent) event).getmChannelId(), ((XhEvent.BindEvent) event).getmUserId())
                                .subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(new Action1<EduCommResponse>() {
                            @Override
                            public void call(EduCommResponse eduCommResponse) {
                                if (eduCommResponse.isSuccess()) {
                                    RememberMe.get().devBindedUser();
                                }
                            }
                        });

when the http response code is 500 ,will throw this error

1.x Question

Most helpful comment

The key message is:

Add onError handling.

i.e., use subscribe(Action1<T>, Action1<Throwable>) at least.

All 2 comments

The key message is:

Add onError handling.

i.e., use subscribe(Action1<T>, Action1<Throwable>) at least.

awesome!!!thks

Was this page helpful?
0 / 5 - 0 ratings

Related issues

dzharikhin picture dzharikhin  路  4Comments

dimsuz picture dimsuz  路  4Comments

dsvoronin picture dsvoronin  路  4Comments

midnight-wonderer picture midnight-wonderer  路  3Comments

ZakTaccardi picture ZakTaccardi  路  3Comments