Я использую RxJava и Retrofit2 (с OkHttp как HTTP-клиент) для создания сетей и пытаюсь понять, как обрабатываются различные ошибки Retrofit2 и как они выглядят со стороны RxJava. Следующий код иллюстрирует обратный вызов Абонента RxJava для сетевого вызова (сделанный с помощью Retrofit).Обработка ошибок Retrofit2 + RxJava
Subscription subscription = observable
.subscribeOn(mScheduler)
.observeOn(mAndroidScheduler)
.subscribe(new Subscriber<User>() {
@Override
public void onCompleted() {
Timber.d("onCompleted called");
mRetainerView.clearUserObservable();
mActivityView.hideProgressBar();
mActivityView.enableUi();
}
@Override
public void onError(Throwable e) {
Timber.d("onError called");
Timber.d(e.toString());
mRetainerView.clearUserObservable();
mActivityView.hideProgressBar();
mActivityView.enableUi();
}
@Override
public void onNext(User user) {
Timber.d("onNext called");
mRetainerView.clearUserObservable();
mActivityView.hideProgressBar();
mActivityView.enableUi();
mActivityView.launchMainActivity();
}
});
Мой вопрос, в каких случаях будет OnError() можно назвать и как только он был назван, как я могу допросить Throwable, чтобы определить причину?
Из источника «Дооснащение» это выглядит как только Throwables, которые можно увидеть, это IOException и HttpException. Может ли кто-нибудь проверить, что это правда?