2011-03-10 59 views

回答

2

当您在BlackBerry应用程序中捕获Throwable时,不仅会保留堆栈跟踪,还会将该堆栈跟踪保存在设备事件日志中。 There is no way for an app to get a stack trace itself,所以很遗憾,您无法自动收集堆栈跟踪。

要查看堆栈跟踪,请启动事件日志查看器。对于使用物理键盘的黑莓,请按住“Alt”,然后按L G L G调出事件日志。

+0

那么这是纯粹的面向开发(相对于生产)措施? – 2011-03-11 21:17:14

0

我不认为有一个特别的原因。查看评论:

}赶上(的Throwable T){//还可以捕获特定的例外情况包括特殊hadling对于不同类型的

这意味着例子是基本的。并有一个错字和一个不好的习惯。所以如果可能的话赶上特定的例外

+1

我觉得这个故事更多,因为Throwable似乎在任何地方都可以使用。 – 2011-03-10 23:57:57

+0

捕捉Throwable对于生产应用来说是一个坏主意(请参阅我对原始问答的回复),但对于测试,原型和其他非面向客户的东西,它可能是合适的。 – seand 2011-03-11 00:02:13

0

在BB平台上,如果捕获到Throwable,它将保留堆栈跟踪并通常将其呈现在屏幕上,在用户的脸上爆炸。不是很好的UX :(

当异常(和扩展类)都陷入堆栈跟踪是出于效率的考虑扔掉。

+3

我是BlackBerry 4.5到6.0的开发者,我可以告诉你它不会在屏幕上呈现堆栈跟踪。不知道你有什么想法。 – 2011-03-11 01:37:12

+0

它可能不会一直发生,但我已经看到它发生的不足,我避免捕获Throwable。众所周知,BB OS会导致你看起来没有要求的UI效果。防爆。我在MDS连接中看到过与BES相关的SSL错误,实际上会导致设备端弹出窗口。附:自从4.1 – seand 2011-03-11 03:04:56

1

阅读java.lang.Error的文档,这是Throwable的子类,你会看到问题与追赶的Throwable

它说:

一个错误是Throwable的 一个子类,表示严重的问题,合理的应用程序 不应该尝试CA TCH。

例如,您最终可能无意中捕获VirtualMachineError,指示整个虚拟机处于损坏状态。将finally块中的东西放在虚拟机上运行似乎不是一个好主意。

+0

以来,我一直在研究BB。我想知道他们为什么会这么做?我猜他们被误导了。 – 2011-03-11 01:16:28

+1

我相信这个评论意味着你不应该试图对Error或者子类型NoClassDefFoundError,VirtualMachineError,FactoryConfigurationError,CryptoSelfTestError进行特殊处理。这并不排除日志记录或其他通用处理来通知您的应用中出现了问题。 – 2011-03-11 01:42:26