Обработка ошибок в Rx - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь обработать ошибки в сети Rx android, но не могу этого сделать, может помочь.

 getCompositeDisposable().add(getManager().callApi(request)
        .subscribeOn(Schedulers.io())
        .observeOn(Schedulers.ui())
        .subscribe(apiResponse -> Log.d(TAG,"success"),
                throwable -> Log.e(TAG,throwable.getMessage)));

Я хочу обработать ошибки в subscribe ()

Журналы:

 io.reactivex.exceptions.OnErrorNotImplementedException: java.net.ConnectException: Failed to connect 
 at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
 at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
 at io.reactivex.internal.observers.ConsumerSingleObserver.onError(ConsumerSingleObserver.java:47)
 at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:79)
 at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
 at android.os.Handler.handleCallback(Handler.java:739)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:158)
 at android.app.ActivityThread.main(ActivityThread.java:7231)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
 Caused by: com.androidnetworking.error.ANError: java.net.ConnectException: Failed to connect to /192.168.1.42:8484
 at com.rx2androidnetworking.Rx2InternalNetworking$SimpleANObservable.subscribeActual(Rx2InternalNetworking.java:235)
 at io.reactivex.Observable.subscribe(Observable.java:10981)
 at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35)
 at io.reactivex.Single.subscribe(Single.java:2801)
 at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
 at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
 at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
 at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)

1 Ответ

0 голосов
/ 01 июня 2018

К сожалению, я не могу комментировать.Не могли бы Вы уточнить?Какую ошибку вы получили?Обычный способ обработки ошибок с использованием rx выглядит следующим образом:

 Subscription subscribe = apiServices.endpointCall(...parameters...)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .unsubscribeOn(Schedulers.io());
            .subscribe(response -> {
                //do something with response
            }, throwable -> {
                //do something with error
            });

Где apiService создается путем модернизации с использованием

 service = retrofit.create(ApiServices.class);
...