处理 RxAndroid ForEach 运算符的错误
Handling error on RxAndroid ForEach operator
这是基于 RxJava & RxAndroid 1.x
我是 Rx 方面的新手,我想使用 forEach
运算符,但我无法处理 Action1
.
中发生的错误
这是我的代码:
Observable.from(listeningDocumentIds)
.subscribeOn(Schedulers.io())
.doOnError(Throwable::printStackTrace)
.forEach(id -> {
detachDocumentChangeListener(listener, document);
});
detachDocumentChangeListener
函数可能会抛出一些异常,但 doOnError
似乎没有完成它的工作。
可以抛出的异常之一是 NullPointerException
,它显然是 RuntimeException
,所以我不明白为什么它没有被我的 doOnError
.[=21 捕获=]
当我在这里时,forEach
是否会使用此代码在 io
thread
上正确 运行?
doOnError
可以查看来自其上方而非下方的错误。它不是错误处理程序,因为错误将继续下游到最终消费者。例如,错误处理是通过 onErrorResumeNext
完成的。否则,您应该使用两个参数 subscribe
而不是 forEach
:
Observable.from(listeningDocumentIds)
.subscribeOn(Schedulers.io())
.subscribe(id -> {
detachDocumentChangeListener(listener, document);
}, Throwable::printStackTrace);
这是基于 RxJava & RxAndroid 1.x
我是 Rx 方面的新手,我想使用 forEach
运算符,但我无法处理 Action1
.
这是我的代码:
Observable.from(listeningDocumentIds)
.subscribeOn(Schedulers.io())
.doOnError(Throwable::printStackTrace)
.forEach(id -> {
detachDocumentChangeListener(listener, document);
});
detachDocumentChangeListener
函数可能会抛出一些异常,但 doOnError
似乎没有完成它的工作。
可以抛出的异常之一是 NullPointerException
,它显然是 RuntimeException
,所以我不明白为什么它没有被我的 doOnError
.[=21 捕获=]
当我在这里时,forEach
是否会使用此代码在 io
thread
上正确 运行?
doOnError
可以查看来自其上方而非下方的错误。它不是错误处理程序,因为错误将继续下游到最终消费者。例如,错误处理是通过 onErrorResumeNext
完成的。否则,您应该使用两个参数 subscribe
而不是 forEach
:
Observable.from(listeningDocumentIds)
.subscribeOn(Schedulers.io())
.subscribe(id -> {
detachDocumentChangeListener(listener, document);
}, Throwable::printStackTrace);