我经常在 Blackberry 文档中看到 Throwable 的 catch 子句,例如Network API docs。我的感觉是,这在 Java 中通常不是一个好的做法。
黑莓编程中有这个原因吗?
它是否与Throwables的堆栈跟踪生成有关?
我经常在 Blackberry 文档中看到 Throwable 的 catch 子句,例如Network API docs。我的感觉是,这在 Java 中通常不是一个好的做法。
黑莓编程中有这个原因吗?
它是否与Throwables的堆栈跟踪生成有关?
当您在 BlackBerry 应用程序中捕获 Throwable 时,它不仅会保留堆栈跟踪,还会将该堆栈跟踪保存在设备事件日志中。 应用程序本身无法获取堆栈跟踪,因此很遗憾您无法自动收集堆栈跟踪。
要查看堆栈跟踪,请打开事件日志查看器。对于带有物理键盘的黑莓,按住“Alt”,然后按 LGLG 以显示事件日志。
阅读java.lang.Error的文档,它是 Throwable 的子类,你会发现捕获 Throwable 的问题。
它说:
Error 是 Throwable 的子类,表示合理的应用程序不应尝试捕获的严重问题。
例如,您最终可能会无意中捕获 VirtualMachineError,指示整个 VM 处于损坏状态。将一些东西放在 finally 块中以在损坏的 VM 上运行似乎不是一个好主意。
我不认为有什么特别的原因。见评论:
} catch (Throwable t) { // 还可以捕获特定异常以包含针对不同类型的特殊处理
这意味着该示例是基本的。并且有一个错字和一个不好的做法。因此,如果可能,请捕获特定异常。
在 BB 平台上,如果 Throwable 被捕获,它会保留堆栈跟踪并通常将其呈现在屏幕上,在用户面前爆炸。对用户体验不是很好:(
当捕获到异常(和扩展类)时,出于效率原因,堆栈跟踪将被丢弃。