发生一般异常时阻止应用终止

时间:2012-12-20 22:55:29

标签: android exception-handling non-termination

有没有办法在一个地方捕获所有“未捕获”的例外并让应用继续?

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

感谢。

2 个答案:

答案 0 :(得分:2)

没有。我不确定你为什么要它。从已知抛出异常的方法中捕获异常,并测试代码以避免NullPointerException等异常。这就是编写优秀代码的方法。

答案 1 :(得分: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)。在启动之前测试您的代码以使其尽可能无错误。