在常规Java中,您可以通过将PrintWriter传递给printStackTrace来获取堆栈跟踪的文本.我有一种感觉,我知道答案(即"不"),但是,
有没有办法在JavaME中获取堆栈跟踪的文本作为字符串?
更新:
我应该提一下,我只限于CLDC 1.0
AFAIK 没有办法以字符串值的形式获取堆栈跟踪,除非特定平台提供了覆盖默认 System.err 流的方法。在 BlackBerry 平台上,它会丢弃堆栈跟踪catch(Exception)
以节省内存,但它不会这样做catch(Throwable)
,而是通过设备事件日志提供对堆栈跟踪的访问。
我最终所做的是在最后可能的时刻捕获 Throwable 而不是 Exception 并从那里打印堆栈跟踪。这当然有一个危险,即您也会捕获到java.lang.Error
不太好的情况,特别是如果它是OutOfMemoryError
,尽管在打印堆栈跟踪之前调用System.gc()
似乎可以降低风险,并且我们没有遇到任何问题。
我会查看您所针对的任何平台,看看它们是否允许在某处访问 System.err。您始终可以连接调试器,它应该出现在控制台输出上,尽管听起来您是在“现场”获取堆栈跟踪。
归档时间: |
|
查看次数: |
4257 次 |
最近记录: |