Android系统。异常处理

时间:2012-04-26 19:34:52

标签: android exception exception-handling stack-trace printstacktrace

我希望能够确定,如果在用户使用我的应用程序时发生异常,则确实发生了异常。我想做类似的ti printStackTrace()方法。 (所以这是在构建模式,而不是调试模式)

目前我已将几乎所有类中的所有方法放在try-catch语句中(每个方法都有一个包含所有指令的try-catch语句),此时我可以显示“树”如果发生异常,则返回一堆方法。但有没有办法确定某个行号,以更精确地指出异常发生在方法内部的位置?与使用printStackTrace()时显示的内容类似。

我并没有真正使用异常处理,执行此操作的最佳做​​法是什么,可以完成?

修改

还有一件事。当我在构建模式下使用printStackTrace()时,它在哪里显示内容,因为Logcat不可用?我可以检索那些信息,也许可以用它做点什么吗? 更好的是,我可以在构建模式下使用getStackTrace()并将其转换为String中的内容并将其输出到某处吗?

1 个答案:

答案 0 :(得分:3)

您的代码未处理并使您的应用在发布模式下崩溃的所有异常都将显示在Android开发者控制台中,靠近您的应用。

为此,您需要retrace obfuscated stack traces.

关于异常处理:我建议您阅读this。如果通过try / catch块包围所有代码,则会出现异常处理错误。

异常处理比这更加微妙,并且经常受到设计考虑因素的影响(无论是在本地处理异常还是将它们抛回调用者)。

总结:在应用程序的核心:不要使用方法签名的throws子句处理异常,而是抛出异常或抛出它们。在上层,靠近UI,使用try / catch处理异常,如果发生错误,请确保您的应用处于稳定状态并向用户显示一些有用的消息。

更多细节(但不是那么多)

    数据库层中的
  • :抛出异常。您仍然可以捕获它们来记录它们,但是抛出或重新抛出它们以告诉调用者出现了问题。
  • 业务层中的
  • :捕获它们,确保您的业务/域模型处于稳定状态并从错误中恢复,并将它们返回给调用者。
  • UI层中的
  • :捕获异常并向用户显示一些消息。