2017-08-25 68 views
0

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

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

在这种情况下,我终于收到CompositeException是由FooExceptionBarException,但我想只接收BarException。帮帮我!

回答

2

您可以使用onErrorResumeNext和返回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); 
} 
+0

它不工作,给出了与使用'doOnError'相同的结果 – piotrek00

+0

我已经用单元测试更新了我的答案,演示了这样的替换作品。 – akarnokd

+0

您的解决方案可行!谢谢! – piotrek00