我们需要一个全局处理程序来处理传递给任何订阅者的 onError 的 rxJava2 异常,以仅记录系统任何部分发生的堆栈跟踪。
在 第一个 版本的 rxJava 中有一个 RxJavaHooks.setOnError
方法,它就是做这件事的。
RxJavaHooks.setOnError(throwable -> Log.w(TAG, "rx error", throwable));
但是在 rxJava2 中那个类被删除了,因为他们注意到逻辑已经被移动到 RxJavaPlugins
类。它有一些类似的命名方法RxJavaPlugins.setErrorHandler
,但实际上调用的目的是完全不同的。它只处理无法交付 异常。
我如何记录所有异常,无论它是否被订阅者捕获?
我真的不想将记录器附加到系统中的每个特定可观察对象
Upd:也许你有一些只针对android系统的建议
最佳答案
没有简单的方法可以做到;你必须安装 onSubscribe
或 onAssembly
Hook 到所有主要的 react 类型,然后以不干扰的方式包装 Subscriber
意外的内部优化。
扩展项目有一个 assembly tracking debug feature它在流程组装时捕获当前线程的堆栈跟踪,并将该信息附加到通过它的 onError
异常中(您实际需要)。
关于java - 如何记录 rxJava2 的所有异常的堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976321/