有没有办法在一个地方捕获所有“未捕获”的异常并让应用程序继续运行?
我看到我可以使用 setUncaughtExceptionHandler 进行一些日志记录等,但应用程序仍将终止。我想要一些可以记录异常的东西,告诉用户他的操作失败了,然后让他继续(尝试别的)。
谢谢。
有没有办法在一个地方捕获所有“未捕获”的异常并让应用程序继续运行?
我看到我可以使用 setUncaughtExceptionHandler 进行一些日志记录等,但应用程序仍将终止。我想要一些可以记录异常的东西,告诉用户他的操作失败了,然后让他继续(尝试别的)。
谢谢。
不,我不确定你为什么想要它。从已知会抛出异常的方法中捕获异常,并测试您的代码以避免异常,例如 NullPointerException。这就是编写好代码的方法。
很抱歉重新访问这样一个旧线程,但由于没有正确的答案,我觉得有义务提供一个解决方案。
将此添加到每次使用应用程序时打开的活动(例如 MainActivity) -
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("Exception"+Thread.currentThread().getStackTrace()[2],paramThrowable.getLocalizedMessage());
}
});
它的作用是为未捕获的异常设置默认处理程序,并且在弹出异常时不会退出应用程序。然而,权力越大,责任越大。我不建议您使用此方法来逃避在代码中捕获异常的责任(例如使用 try-catch)。在启动之前测试您的代码以使其尽可能无错误。