当前位置: 首页 > 面试题库 >

Android异常处理最佳实践?

云和同
2023-03-14
问题内容

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

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

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

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


问题答案:

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

在这里,您创建一个类 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);
    }
}

希望这可以帮助…



 类似资料:
  • 并创建一个新的,解释应用程序立即崩溃(并给用户发送包含错误详细信息的邮件的机会),而不是由于Android造成的延迟。有没有更好的方法来实现这一点,或者这是不鼓励的? 更新:我使用的Nexus 5启用了ART功能,我没有注意到应用程序崩溃时的延迟(我最初说的“挂起”)。我想既然现在一切都是本机代码,崩溃就会立即发生,同时得到所有的崩溃信息。也许Nexus5只是速度很快:)不管怎样,这在未来的And

  • 问题内容: 几天前我才开始尝试使用node.js。我意识到只要程序中有未处理的异常,Node就会终止。这与我所见过的普通服务器容器不同,在普通服务器容器中,当发生未处理的异常时,只有工作线程死亡,并且容器仍然能够接收请求。这引起了一些问题: 是唯一有效的预防方法吗? 在执行异步过程期间也会捕获未处理的异常吗? 是否存在已经构建的模块(例如发送电子邮件或写入文件),在未捕获的异常的情况下可以利用该模

  • 本文向大家介绍详解Spring MVC/Boot 统一异常处理最佳实践,包括了详解Spring MVC/Boot 统一异常处理最佳实践的使用技巧和注意事项,需要的朋友参考一下 前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是一件棘手的事情, 对于很多人来说, 可能对异常处理有以下几个问题: 什么时候需要捕获(try-catch)异常, 什么时候需要抛出(throws)异常到上层. 在

  • 在我的应用程序里。我正试图使用Kotlin Coroutines发送网络请求。我分析了一些情况下的响应和抛出异常。下面是代码: 此拦截异常。 logcat中的此异常消息 06-03 17:18:01.012 237 96-24010/ru.mtsbank.dbosme e/androidruntime:致命异常:OkHttp调度程序流程:ru.mtsbank.dbosme,pid:23796 ja

  • 我有一个超时执行任务的方法。我使用ExecutorServer.submit()获取一个Future对象,然后调用future.get()并超时。这很好,但是我的问题是处理我的任务可能抛出的检查异常的最好方法。下面的代码工作正常,并且保留了被检查的异常,但是如果方法签名中被检查的异常的列表改变了,它看起来非常笨拙并且容易出错。 关于如何解决这个问题的任何建议?我需要以Java 5为目标,但我也很好

  • 我有一个rest服务,它将抛出一个异常,我想知道什么将是最好的方式来处理这一点。 我想知道这是rest服务中处理异常的正确方式吗? 我在用泽西。