似乎RxJava中存在两种错误:
onError
RxJavaPlugins.setErrorHandler
我很难理解为什么会这样。问题:
onError
? 答案 0 :(得分:3)
您可以在Wiki pages上找到针对 Rx2 所做更改的大部分设计决策:
2.x的一个重要设计要求是不应该吞下
Throwable
个错误。这意味着无法发出错误,因为下游的生命周期已经到达终端状态,或者下游取消了即将发出错误的序列。
为确保错误仅由观察者的onError()
消费者处理,您必须将全局处理程序设置为空消费者:
RxJavaPlugins.setErrorHandler(emptyConsumer());
答案 1 :(得分:0)
订阅onError()
处理流达到其终端状态之前发出的错误。对于流终止或取消后发出的错误,rxjava默认将堆栈跟踪打印到控制台并调用未捕获的异常处理程序,即崩溃。因此,RxJavaPlugins.setErrorHandler(...)
对于在全局范围内处理这些不可交付的异常很有必要。
参考: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling