Rx java RxAndroid ForEach运算符上的处理错误

Rx java RxAndroid ForEach运算符上的处理错误,rx-java,rx-android,Rx Java,Rx Android,这是基于RxJava和rxandroid1.x的 我是接收东西的新手,我想使用forEach操作符,但我无法处理Action1中发生的错误 这是我的密码: Observable.from(listeningDocumentIds) .subscribeOn(Schedulers.io()) .doOnError(Throwable::printStackTrace) .forEach(id -> { detachDoc

这是基于RxJava和rxandroid1.x的

我是接收东西的新手,我想使用
forEach
操作符,但我无法处理
Action1
中发生的错误

这是我的密码:

Observable.from(listeningDocumentIds)
        .subscribeOn(Schedulers.io())
        .doOnError(Throwable::printStackTrace)
        .forEach(id -> {
            detachDocumentChangeListener(listener, document);
        });
detachDocumentChangeListener
函数可能会引发一些异常,但是
doError
似乎没有发挥作用

可以抛出的异常之一是
NullPointerException
,它显然是
RuntimeException
,因此我不明白为什么我的
DoError
没有捕捉到它


当我在这里的时候,
forEach
是否会正确地运行在
io
线程上,并使用此代码?

doon错误
可以窥视来自其上方而非下方的错误。它不是一个错误处理程序,因为错误将继续向下游到达最终使用者。例如,通过
onErrorResumeNext
完成错误处理。否则,您应该使用两个参数
subscribe
,而不是
forEach

Observable.from(listeningDocumentIds)
    .subscribeOn(Schedulers.io())
    .subscribe(id -> {
        detachDocumentChangeListener(listener, document);
    }, Throwable::printStackTrace);

doError
可以窥视来自上面而不是下面的错误。它不是一个错误处理程序,因为错误将继续向下游到达最终使用者。例如,通过
onErrorResumeNext
完成错误处理。否则,您应该使用两个参数
subscribe
,而不是
forEach

Observable.from(listeningDocumentIds)
    .subscribeOn(Schedulers.io())
    .subscribe(id -> {
        detachDocumentChangeListener(listener, document);
    }, Throwable::printStackTrace);