2017-08-31 85 views
1

我们需要一个全局处理程序rxJava2异常传递给任何订阅者的onError,只记录在系统的任何部分发生的栈跟踪。
第一个版本的rxJava是一个RxJavaHooks.setOnError方法,正是这个事情。如何记录rxJava2的所有异常的堆栈跟踪?

RxJavaHooks.setOnError(throwable -> Log.w(TAG, "rx error", throwable)); 

但在rxJava2移除该类和他们注意到的逻辑已经被转移到RxJavaPlugins类。它有一些类似的命名方法RxJavaPlugins.setErrorHandler,但实际上调用的目的是完全不同的。它仅处理无法投递的异常。 我如何记录所有异常,或者是否由用户捕获?
我真的不希望记录器连接到每一个具体的可观测系统
UPD:也许你只对Android系统有一些意见

回答

1

有这样做的没有简单的方法;您必须安装onSubscribeonAssembly挂钩到所有主要反应类型,然后以不会干扰内部优化意外的方式包装Subscriber

的扩展项目有一个assembly tracking debug feature捕捉时流组装当前线程的堆栈跟踪并附加在onError例外穿过它(你实际上需要)的信息。

+0

感谢您的指点,我会检查它 – Beloo