我正在使用 onErrorReturn
如果 observable 遇到错误,发出特定项目而不是调用 onError
:
Observable<String> observable = getObservableSource();
observable.onErrorReturn(error -> "All Good!")
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.trampoline())
.subscribe(item -> onNextAction(),
error -> onErrorAction()
);
这工作正常,但我想在 onErrorReturn
仅当满足某些条件时消耗错误。就像从 catch
block 中重新抛出异常一样。
类似于:
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
从未存在过一样?
最佳答案
使用 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()
);
关于java - 如何有条件地处理 Observable 链中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49740276/