【发布时间】:2017-01-20 03:43:42
【问题描述】:
我正在使用 RxJava 和 Retrofit2(使用 OkHttp 作为 HTTP 客户端)进行网络连接,并试图了解 Retrofit2 如何处理不同的错误,以及它们在 RxJava 方面的外观。以下代码说明了网络调用的 RxJava 订阅者回调(使用 Retrofit 进行)。
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 以确定原因?
从 Retrofit 源代码看来,唯一可以看到的 Throwable 是 IOException 和 HttpException。任何人都可以验证这是真的吗?
【问题讨论】:
标签: android retrofit rx-java retrofit2 okhttp3