如何在Java ME中获取异常堆栈跟踪的文本?

izb*_*izb 8 java java-me

在常规Java中,您可以通过将PrintWriter传递给printStackTrace来获取堆栈跟踪的文本.我有一种感觉,我知道答案(即"不"),但是,

有没有办法在JavaME中获取堆栈跟踪的文本作为字符串?

更新:

我应该提一下,我只限于CLDC 1.0

ror*_*ryf 2

AFAIK 没有办法以字符串值的形式获取堆栈跟踪,除非特定平台提供了覆盖默认 System.err 流的方法。在 BlackBerry 平台上,它会丢弃堆栈跟踪catch(Exception)以节省内存,但它不会这样做catch(Throwable),而是通过设备事件日志提供对堆栈跟踪的访问。

我最终所做的是在最后可能的时刻捕获 Throwable 而不是 Exception 并从那里打印堆栈跟踪。这当然有一个危险,即您也会捕获到java.lang.Error不太好的情况,特别是如果它是OutOfMemoryError,尽管在打印堆栈跟踪之前调用System.gc()似乎可以降低风险,并且我们没有遇到任何问题。

我会查看您所针对的任何平台,看看它们是否允许在某处访问 System.err。您始终可以连接调试器,它应该出现在控制台输出上,尽管听起来您是在“现场”获取堆栈跟踪。