在Android中发生异常时,如何让程序自动打印堆栈跟踪

时间:2013-11-21 08:00:47

标签: java android debugging stack-trace

有没有办法在Exception发生时自动打印堆栈跟踪?我理解我可以通过try-catch语句手动包围一个块来实现,但是没有先验知识在程序中会发生异常,并且在可疑区域中逐块地执行它将是超级低效的,因为那里'可能很多。那么在Android中是否有任何配置选项或任何编程方式?(如在最高级别的方法中包围try-catch块?,但最高级别的方法是什么)

4 个答案:

答案 0 :(得分:3)

Application类中定义全局异常处理程序,并添加所需的任何代码。

Thread.setDefaultUncaughtExceptionHandler(
                new DefaultExceptionHandler(this));

建议您仍然重新抛出捕获的异常,以便应用程序停止运行,因为它将处于不稳定状态而不这样做会导致应用程序冻结。

答案 1 :(得分:0)

catch (Exception e) {e.printStackTrace();}

最高级别是我认为的应用程序级别。但总的来说,只要抓住通常的活动生命周期应该就足够了。

答案 2 :(得分:0)

扩展异常并在自定义异常类中执行任何操作。

答案 3 :(得分:0)

有两种主要的例外情况:

  1. 由编程错误引起的异常(例如,取消引用空引用,......)
  2. 由环境引起的异常(例如,用户在数字字段中输入'abc',网络电缆已拔下,...)
  3. 在大多数情况下,你无法真正从第一个恢复。 (如果出现意外问题,你怎么知道如何安全地恢复?)这通常是未经检查的异常,你不必在某处捕获它们。

    系统/框架捕获未捕获的异常并自动记录!

    注意第二种例外情况!它们通常不是未经检查的,必须通过throws子句进行缓存或指定。处理它们,可能是log them,并尽可能恢复。

    This document解释了如何阅读Android设备上的错误日志和其他日志。还有一些应用程序可以显示设备本身的日志。

    另请阅读此basic exception tutorial