RxNetty如何使用onErrorResumeNext



我正面临一个问题,在抛出异常后从可观察对象中获得其余项目。假设我有10个项目要发出,在第二个项目上,我抛出一个异常,我的Subscriber onError被调用并抛出异常,之后,剩下的8个项目将被发出。我如何在这里继续向订阅者(onNext)发送其余的8个项目?由于

使用onErrorResumeNext告诉你的管道在发生Exception时发出什么。看看这个单元测试示例。

@Test
public void observableOnErrorResumeException() {
Integer[] numbers = {0, 1, 2, 3, 4, 5};
Observable.from(numbers)
        .doOnNext(number -> {
            if (number > 3) {
                try {
                    throw new IllegalArgumentException();
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        })
        .onErrorResumeNext(t -> Observable.just(666))
        .subscribe(System.out::println);

}

这段代码将打印

0
1
2
3
666

您可以在这里看到更多示例https://github.com/politrons/reactive

源发出的10项发出错误或一些操作符之间?如果源程序发出错误,那么恢复必须内置到源程序中,因为在RxJava中没有显式的恢复契约。如果中间有一个运算符发出一个错误,那么这个错误必须被onErrorResumeNext()之类的东西抑制。查看代码使注释更容易。

相关内容

  • 没有找到相关文章

最新更新