0

有没有办法在一个地方捕获所有“未捕获”的异常并让应用程序继续运行?

我看到我可以使用 setUncaughtExceptionHandler 进行一些日志记录等,但应用程序仍将终止。我想要一些可以记录异常的东西,告诉用户他的操作失败了,然后让他继续(尝试别的)。

谢谢。

4

2 回答 2

2

不,我不确定你为什么想要它。从已知会抛出异常的方法中捕获异常,并测试您的代码以避免异常,例如 NullPointerException。这就是编写好代码的方法。

于 2012-12-20T23:00:28.903 回答
0

很抱歉重新访问这样一个旧线程,但由于没有正确的答案,我觉得有义务提供一个解决方案。

将此添加到每次使用应用程序时打开的活动(例如 MainActivity) -

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
                Log.e("Exception"+Thread.currentThread().getStackTrace()[2],paramThrowable.getLocalizedMessage());
            } 
        });

它的作用是为未捕获的异常设置默认处理程序,并且在弹出异常时不会退出应用程序。然而,权力越大,责任越大。我不建议您使用此方法来逃避在代码中捕获异常的责任(例如使用 try-catch)。在启动之前测试您的代码以使其尽可能无错误。

于 2015-07-24T10:26:48.343 回答