在RxJava中,RxJavaPlugins.setErrorHandler和Subscribe onError有什么区别?

sdg*_*sdh 5 java rx-java rx-java2

似乎RxJava中有两种错误:

  1. 订阅者捕获的错误 onError
  2. 并且由设置的处理程序全局捕获错误 RxJavaPlugins.setErrorHandler

我很难理解为什么会这样.问题:

  • 有两个错误处理程序背后的理由是什么?
  • 导致错误发送到一个处理程序与另一个处理程序的原因是什么?
  • 如何确保仅将错误发送给onError

tyn*_*ynn 5

您可以在Wiki 页面上找到大多数关于Rx2更改的设计决策:

2.x 的一项重要设计要求是Throwable不应吞下任何错误。这意味着无法发出错误,因为下游的生命周期已经达到其终止状态或下游取消了即将发出错误的序列。

为确保错误仅由onError()观察者的使用者处理,您必须将全局处理程序设置为空使用者:

RxJavaPlugins.setErrorHandler(emptyConsumer());
Run Code Online (Sandbox Code Playgroud)