【发布时间】:2011-03-10 23:24:10
【问题描述】:
我经常在 Blackberry 文档中看到 Throwable 的 catch 子句,例如 Network API docs。我的感觉是,这在 Java 中通常不是一个好的做法。
在黑莓编程中有这样的原因吗?
这是否与 Throwables 的 stack trace generation 有关?
【问题讨论】:
标签: blackberry java-me try-catch throwable
我经常在 Blackberry 文档中看到 Throwable 的 catch 子句,例如 Network API docs。我的感觉是,这在 Java 中通常不是一个好的做法。
在黑莓编程中有这样的原因吗?
这是否与 Throwables 的 stack trace generation 有关?
【问题讨论】:
标签: blackberry java-me try-catch throwable
当您在 BlackBerry 应用程序中捕获 Throwable 时,它不仅会保留堆栈跟踪,还会将该堆栈跟踪保存在设备事件日志中。 There is no way for an app to get a stack trace itself,所以很遗憾你不能自动收集堆栈跟踪。
要查看堆栈跟踪,请打开事件日志查看器。对于带有物理键盘的黑莓,按住“Alt”,然后按 L G L G 以调出事件日志。
【讨论】:
阅读 java.lang.Error 的文档,它是 Throwable 的子类,您会发现捕获 Throwable 的问题。
上面写着:
错误是 Throwable 的子类 这表明严重的问题,一个合理的应用 不应该试图抓住。
例如,您最终可能会无意中捕获 VirtualMachineError,指示整个 VM 处于损坏状态。将一些东西放在 finally 块中以在损坏的 VM 上运行似乎不是一个好主意。
【讨论】:
我不认为有什么特别的原因。见评论:
} catch (Throwable t) { // 也可以捕获特定异常以包含针对不同类型的特殊hadling
这意味着示例是基本的。并且有一个错字和一个不好的做法。因此,如果可能,请捕获特定异常。
【讨论】:
在 BB 平台上,如果 Throwable 被捕获,它会保留堆栈跟踪并通常将其呈现在屏幕上,在用户面前爆炸。对用户体验不太好:(
当捕获到异常(和扩展类)时,出于效率原因,堆栈跟踪将被丢弃。
【讨论】: