我想实现一个全局处理程序来捕获应用程序中未捕获的所有可能异常。
我们在项目中使用Rx。我找到了这个全局处理程序:
RxJavaPlugins.getInstance().registerErrorHandler(new RxJavaErrorHandler() {
@Override
public void handleError(Throwable e) {
super.handleError(e);
}
});
然而,还有这个处理程序:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
}
});
在其文件中说明: “设置默认的未捕获异常处理程序。如果任何线程由于未处理的异常而死亡,则调用此处理程序”
在“Application”类(主入口点)中放置“Thread.setDefaultUncaughtExceptionHandler”是否也会捕获Rx方法中的异常?
答案 0 :(得分:1)
这是两个单独的实用程序,只是切向相关。
UncaughtExceptionHandler
适用于未被捕获的任何Exception
渗透系统。未捕获的异常会导致您的应用崩溃,因此人们通常会使用默认的UncaughtExceptionHandler
进行崩溃跟踪。
RxJavaErrorHandler
仅适用于RxJava日志记录。 每个时间onError
都会调用任何订阅,它会调用此方法。它会调用它是否已经处理onError
,也不应该将它用于任何类型的流量控制,所以它实际上只对日志记录有用。
听起来你想要的是使用UncaughtExceptionHandler
。它将捕获应用程序未处理的任何内容(包括RxJava)。