本文介绍了RxJava 2中的映射异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I map one occurred exception to another one in RxJava2? For example:

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

在在这种情况下,我最终收到由 FooException BarException CompositeException >,但我只想接收 BarException 。帮帮我!

In this case I finally receive CompositeException that consists of FooException and BarException, but I'd like to receive only BarException. Help!

推荐答案

您可以使用onErrorResumeNext并从中返回Observable.error():

You can use onErrorResumeNext and return Observable.error() from it:

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);
}

这篇关于RxJava 2中的映射异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 12:44