为什么RxJava与Android上的改造doOnError()不起作用,但Subscriber onError

有人可以解释我为什么这样的代码:

networApi.getList() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .doOnError(throwable -> { throwable.getMessage(); }) .doOnNext(list -> { coursesView.populateRecyclerView(list); courseList = (List<Course>) courses; }).subscribe(); 

如果没有互联网进入doOnError,但进一步抛出,所以应用程序停机,但代码是这样的:

 networkApi.getList() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<? extends Course>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { e.getMessage(); } @Override public void onNext(List<? extends Course> list) { coursesView.populateRecyclerView(list); courseList = (List<Course>) list; } }); 

工作如何我期望,这意味着当没有互联网连接,它什么都不做

欢呼Wojtek

  • Android MVP与RxAndroid + Retrofit
  • 如何正确处理RxJava(Android)中的onError?
  • RxJava +改进长轮询
  • Rxjava和Volley请求
  • RxJava:尝试将错误传播到Observer.onError时发生错误
  • 使用RXJava和Retrofit获取标题信息
  • 为什么在Android上使用Retrofit的RxJava doOnError()不起作用,但是Subscriber onError会起作用
  • 用未收到的消息debuggingRxJava问题的最佳方法是什么?
  • 基本上, doOnError处理错误,因为它不会消耗它。 它只是做了一些事情 ,logging下来,例如。 (对于doOnNext也是如此 – 它也不会消耗该项目,并且该项目仍然在onNext上结束)。

    错误仍然发送到链中,并仍然会在您的SubscriberonError结束。

    我很确定你的应用崩溃了一个OnErrorNotImplementedException ,那是因为你根本没有任何的Subscriber ,因此没有onError方法。