我经常在Blackberry文档中看到Throwable的catch子句,例如Network API docs。我的感觉是,这在Java中通常不是一个好习惯。
Blackberry编程中有这个原因吗?
是否与Throwables的stack trace generation有关?
答案 0 :(得分:2)
当您在BlackBerry应用程序中捕获Throwable时,它不仅会保留堆栈跟踪,还会将该堆栈跟踪保存在设备事件日志中。 There is no way for an app to get a stack trace itself,很遗憾,您无法自动收集堆栈跟踪。
要查看堆栈跟踪,请启动事件日志查看器。对于带有物理键盘的黑莓,按住“Alt”然后按L G L G以显示事件日志。
答案 1 :(得分:1)
阅读java.lang.Error的文档,它是Throwable的子类,您将看到捕获Throwable的问题。
它说:
错误是Throwable的子类 这表明合理应用存在严重问题 不应该试图抓住。
例如,您可能最终无意中捕获VirtualMachineError,指示整个VM处于损坏状态。将一些东西放在finally块中以在破坏的VM上运行似乎不是一个好主意。
答案 2 :(得分:0)
我认为没有特殊原因。见评论:
} catch(Throwable t){//还可以捕获特定的异常以包含针对不同类型的特殊 hadling
这意味着这个例子是基本的。并有一个错字,一个不好的做法。因此,如果可能,请抓住特定的例外情况。
答案 3 :(得分:0)
在BB平台上,如果捕获了Throwable,它会保留堆栈跟踪并通常在屏幕上呈现它,在用户的脸上爆炸。用户体验不太好:(
当捕获Exception(和扩展类)时,出于效率原因,堆栈跟踪将被丢弃。