有一个PublishProcessor
调用.doOnSubscribe(checkCondition)
运算符来执行某些检查。 checkCondition
旨在抛出UnsupportedOperationException
,然后必须沿着流向onError()
方法传播给订阅者。相反,UndeliverableException
被抛出并且进程崩溃。
publishProcessor
.filter(() -> { // predicate })
.observeOn(scheduler)
.doOnSubscribe(checkCondition)
.to((sourceFlowable) -> new FancyFlowable(sourceFlowable)))
.safeSubscribe(subscriber);
有谁知道这里出了什么问题?为什么从checkCondition
抛出的异常不会传播到订阅者的onError
?
答案 0 :(得分:1)
这是RxJava 2的doOnSubscribe
运算符的错误。如果onSubscribe
回调崩溃,则可以Throwable
合法地通过onError
发出Observable.defer(() -> checkCondition ? error(...) : publishProcessor)
信号。我很快就会发布一个修复程序。
目前,this comment可能是您的解决方法:
{{1}}
答案 1 :(得分:0)
可能因为那没有意义; doOnSubscribe在可观察链正确初始化之前运行。你考虑过这样的事吗?
if(checkCondition) {
Observable.error(...).safeSubscribe(subscriber);
}
然后继续使用原始代码(sans doOnSubscribe)。