Почему 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

Solutions Collecting From Web of "Почему RxJava с доработкой на Android doOnError () не работает, но Subscriber onError делает"

В принципе doOnError не обрабатывает ошибку, в том смысле, что она ее не потребляет . Он просто что-то делает с ним , например, запишите его. (То же самое верно для doOnNext – он также не потребляет элемент, и элемент все равно попадает в onNext Subscriber ).

Ошибка по-прежнему отправляется по цепочке и все равно onError в onError вашего Subscriber .

Я полностью уверен, что ваше приложение сбой с OnErrorNotImplementedException и это потому, что у вас нет Subscriber вообще, и поэтому нет метода onError .