小编典典

Android异常处理最佳实践?

java

如果我的应用程序崩溃了,它会挂起几秒钟,然后Android告诉我该应用程序崩溃了,需要关闭。所以我当时想用通用的方式捕获应用程序中的所有异常:

try {
    // ... 
} catch(Exception e) { 
    // ...
}

并做一个新的Activity解释,说明应用程序立即崩溃(并且还使用户有机会发送包含错误详细信息的邮件),而不是由于Android而造成了延迟。是否有更好的方法来实现这一目标?

更新: 我使用的是启用了ART的Nexus
5,但我没有注意到我以前遇到的崩溃(我最初所说的“挂起”)是延迟的。我认为既然所有内容都是本机代码,那么崩溃会立即发生,并且会获取所有崩溃信息。也许Nexus
5很快就可以了:)不管怎么说,这可能不会在将来的Android版本中引起担心(假设ART将成为Android L中的默认运行时)。


阅读 266

收藏
2020-09-15

共1个答案

小编典典

在这里,检查链接以供参考

在这里,您创建一个类 ExceptionHandler that implements java.lang.Thread.UncaughtExceptionHandler..

在本课程中,您将进行一些节省生命的工作,例如创建stacktrace和准备上载错误报告等。

现在是重要的部分,
即如何捕获该异常。虽然很简单。在您的重写onCreate方法中调用super方法之后,在每个Activity中复制以下代码行。

Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));

您的活动可能看起来像这样……

public class ForceClose extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));

        setContentView(R.layout.main);
    }
}

希望这可以帮助…

2020-09-15