如何有条件地处理onErrorReturn中的错误?

Abh*_*ain 4 java android rx-java rx-java2

onErrorReturn用来发出特定的项目,而不是onError如果可观察的对象遇到错误则调用它:

Observable<String> observable = getObservableSource();
observable.onErrorReturn(error -> "All Good!")
          .subscribeOn(Schedulers.io())
          .observeOn(Schedulers.trampoline())
          .subscribe(item -> onNextAction(),
              error -> onErrorAction()
          );
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我只想在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]
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有办法将错误从内部传播到可观察的链中,onErrorReturn就像onErrorReturn从未出现过一样?

Sam*_*net 9

使用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()
          );
Run Code Online (Sandbox Code Playgroud)