问题
How can I map one occurred exception to another one in RxJava2? For example:
doOnError(throwable -> {
if (throwable instanceof FooException) {
throw new BarException();
}
})
In this case I finally receive CompositeException
that consists of FooException
and BarException
, but I'd like to receive only BarException
. Help!
回答1:
You can use onErrorResumeNext and return Observable.error() from it:
source.onErrorResumeNext(e -> Observable.error(new BarException()))
Edit
This test passes for me:
@Test
public void test() {
Observable.error(new IOException())
.onErrorResumeNext((Throwable e) -> Observable.error(new IllegalArgumentException()))
.test()
.assertFailure(IllegalArgumentException.class);
}
来源:https://stackoverflow.com/questions/45885416/mapping-exception-in-rxjava-2