RxJava 2 中的映射异常

Mapping exception in RxJava 2

如何在 RxJava2 中将一个发生的异常映射到另一个异常? 例如:

doOnError(throwable -> {
    if (throwable instanceof FooException) {
        throw new BarException();
    }
})

在这种情况下,我最终收到由 FooExceptionBarException 组成的 CompositeException,但我只想收到 BarException。帮助!

您可以使用 onErrorResumeNext 和 return Observable.error() 从它:

source.onErrorResumeNext(e -> Observable.error(new BarException()))

编辑

我通过了这个测试:

@Test
public void test() {
    Observable.error(new IOException())
    .onErrorResumeNext((Throwable e) -> Observable.error(new IllegalArgumentException()))
    .test()
    .assertFailure(IllegalArgumentException.class);
}