Retrofit2 和 RxJava2:如何检测网络错误

Retrofit2 and RxJava2 : How to detect the network error

我正在使用 Retofit2 和 RxJava2 从 API 获取数据。我正在使用以下代码

Observable<Recipe> recipeObservable = getDataManager().getRecipes(String.valueOf(page));

        recipeObservable.subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Recipe>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {

                    }

                    @Override
                    public void onNext(@NonNull Recipe recipe) {

                        getMvpView().updateRecipeList(recipe.getResults());
                        ++page;
                        //getMvpView().hideLoading();
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {

                        if (e instanceof HttpException)
                            Timber.d("Network Error");
                    }

                    @Override
                    public void onComplete() {

                    }
                });

但问题是 Timber.d("Network Error"); 永远不会执行。我查看了各种网站,但无法解决问题。我习惯 Retrofit2 但不熟悉 RxJava2。所以请帮助。如果需要更多信息,请询问,我会 post 提供。

HttpException 与网络故障无关。 IOException 正是您要查找的内容。