2009-12-17 47 views
0

當在Java中給出一個Exception對象時,有什麼方法可以獲取(或推斷)此異常的堆棧跟蹤中涉及的實例?我知道StackTraceElement包含涉及的信息,但實際情況如何?如何獲取涉及Java異常堆棧跟蹤的實例的回調?

如果您想知道,我想在顯示錯誤對話框的Thread.UncaughtExceptionHandler中使用它。計劃是找出哪個JFrame產生了未處理的異常並將其設置爲父級(這會影響對話框的定位,模態(它阻塞的窗口)等)。

謝謝。

回答

1

AFAIK沒有標準的API支持。我的建議如下:

如果每個JFrame都有一個線程,只需在Thread中添加一個字段,以便它知道JFrame與哪個JFrame相關聯,以便它可以在發生異常時處理它。否則,如果您有一個執行由多個JFrame對象調度的作業的中央線程,請將JFrame字段添加到作業對象中。當抓取一個異常時,從Job對象中提取JFrame,你很好。

+0

是否有可能爲每個JFrame有一個單獨的線程? AFAIK Swing應用程序中的所有GUI代碼都通過事件派發線程運行。 – sateesh 2009-12-17 12:15:07

+0

GUI應用程序可以啓動一個(或多個)線程。這些新線程不應該執行與GUI相關的操作。當他們確實需要這樣做時,他們可以使用SwingUtilities.invokeLater()。我認爲在你的情況下是關於這些「次要」線程。如果不是,你能澄清嗎? – 2009-12-17 12:23:08

+0

我不是問題的海報,發佈了評論,以更多地瞭解您發佈的答案。謝謝。 – sateesh 2009-12-18 04:11:35