如果observable遇到错误,我使用onErrorReturn
发出特定项而不是调用onError
:
Observable<String> observable = getObservableSource();
observable.onErrorReturn(error -> "All Good!")
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.trampoline())
.subscribe(item -> onNextAction(),
error -> onErrorAction()
);
这样可以正常工作,但只有在满足某些条件时我才会在onErrorReturn
中使用错误。就像从catch
块中重新抛出异常一样。
类似的东西:
onErrorReturn(error -> {
if (condition) {
return "All Good!";
} else {
// Don't consume error. What to do here?
throw error; // This gives error [Unhandled Exception: java.lang.Throwable]
}
});
有没有办法从onErrorReturn
内部向下传播可观察链中的错误,好像onErrorReturn
从未出现过?
答案 0 :(得分:5)
使用onErrorResumeNext
我想你可以达到你想要的效果
observable.onErrorResumeNext(error -> {
if(errorOk)
return Observable.just(ok)
else
return Observable.error(error)
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.trampoline())
.subscribe(item -> onNextAction(),
error -> onErrorAction()
);
答案 1 :(得分:0)
您可以创建一个通常会收到此错误的方法,例如
private void onError(Throwable error) {
// do whatever you want with your error
}
...
.onErrorReturn( error -> onError(error) )