我正在使用RxJava和Retrofit2(使用OkHttp作为HTTP客户端)进行网络请求,并试图了解Retrofit2如何处理不同的错误以及它们在RxJava方面的表现。以下代码演示了一个用Retrofit进行网络请求时的RxJava Subscriber回调。
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源代码来看,似乎可能看到的只有IOException和HttpException。有人可以验证这是正确的吗?