У меня есть приложение для Android, и я создал Completable, используя функцию getValue, и я подписываюсь на возвращаемое значение getValue (), которое является Completable.
Completable getValue(){
Completable.create(
emitter -> {
int result = getResult();
if(result == 1){
emitter.onComplete();
}
else{
emitter.onError();
}
})
.doOnError(t -> Log.i(" Completable ", "Error"));
}
Blockquote
getValue()
.subscribeOn(Schedulers.io)
.toObservable()
.materialize()
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
Log.i("Completable ","onComplete");
}
@Override
public void onError(Throwable e) {
Log.i("Completable ","error");
}
});
onComplete () печатается в журналах каждый раз, когда я вызываю getValue и когда result = 1.
Но onError никогда не вызывается, когда результат! = 1.
Вместо этого я получаю исключение OnErrorNotImplementedException.
Я вижу в журналах, что мой журнал внутри doOnError () печатается.
Blockquote
Когда я вижу журналы исключений, они отображаются следующим образом
io.reactivex.exceptions.OnErrorNotImplementedException
at io.reactivex.internal.observers.EmptyCompletableObserver.onError(EmptyCompletableObserver.java:51)
at io.reactivex.internal.operators.completable.CompletableCreate$Emitter.tryOnError(CompletableCreate.java:90)
at io.reactivex.internal.operators.completable.CompletableCreate$Emitter.onError(CompletableCreate.java:76)
Здесь что-то не так?