pio*_*ski 2 java exception-handling reactive-programming rx-java2
如何在RxJava2中将一个发生的异常映射到另一个异常?例如:
doOnError(throwable -> {
if (throwable instanceof FooException) {
throw new BarException();
}
})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我最终收到CompositeException包含FooException和的内容BarException,但我只想收到BarException。救命!
您可以使用onErrorResumeNext并从中返回Observable.error():
source.onErrorResumeNext(e -> Observable.error(new BarException()))
Run Code Online (Sandbox Code Playgroud)
编辑
该测试对我来说是合格的:
@Test
public void test() {
Observable.error(new IOException())
.onErrorResumeNext((Throwable e) -> Observable.error(new IllegalArgumentException()))
.test()
.assertFailure(IllegalArgumentException.class);
}
Run Code Online (Sandbox Code Playgroud)