1.
Из onError
документации :
Уведомляет наблюдателя о том, что наблюдаемое обнаружило ошибку.
onError
не будет вызван, поскольку в исходном источнике не было ошибок.Ошибка была выдана в методе onNext
наблюдателя .Если вы хотите проверить onError
, вам нужно выдать ошибку в потоке, например:
sourece
.map( str -> throw new RuntimeException("I am thrown: " + str))
.subscribe(myObserver);
Выше кода будет вызывать onError
вместо onNext
.
2. Почему UndeliverableException выдается только дважды?
Я думаю, UndeliverableException
выдается только один раз, и все сообщение об ошибке описывает только один сбой.Как только ваш код завершится с ошибкой в методе onNext
с «alpha», после этого ничего не произойдет.
Попробуйте запустить код только с одним элементом, например:
Observable<String> source = Observable.just("Alpha");
и посмотрите, получите ли вы то же сообщение об ошибке.Кроме того, вы можете проверить, испускается ли что-нибудь:
Observable<String> source = Observable.just("Alpha", "Beta", "Gamma", "Upma", "Idly")
.doOnNext(/* put log here to see what is being emitted */);