Почему RxJava с дооснащением на Android doOnError() не работает, но абонент 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;
}
});
работа, как я ожидаю, это означает, когда нет подключения к интернету он ничего не делает
ура Войтек!--3-->
1 ответов
по сути, doOnError
не дескриптор ошибка, в том смысле, что она не потреблять его. Это просто делает что-то с ним, зарегистрируйте его, например. (То же самое верно и для doOnNext
- Он также не потребляет элемент, и элемент по-прежнему заканчивается в onNext
на Subscriber
).
ошибка по-прежнему отправляется вниз по цепочке и все равно заканчивается в onError
вашего Subscriber
.
Я уверен, что ваше приложение сбой с OnErrorNotImplementedException
и это потому, что у вас нет никаких Subscriber
вообще и поэтому нет onError
метод.