【问题标题】:Mapping exception in RxJava 2RxJava 2 中的映射异常
【发布时间】:2017-08-25 16:04:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: java exception-handling reactive-programming rx-java2


    【解决方案1】:

    您可以使用 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);
    }
    

    【讨论】:

    • 它不起作用,并给出与使用 doOnError 相同的结果
    • 我已经用单元测试更新了我的答案,展示了这种替换工作。
    猜你喜欢
    • 2018-05-27
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多