2013-07-23 73 views
0

我明確地拋出一個異常在執行動作的方法中並沒有捕獲它,所以EDT異常處理程序應該捕獲它並且理想情況下EDT應該停止工作,但是當我點擊框架的按鈕時,EDT再次開始。線程可以如何重新啓動?在事件監聽器中未捕獲的異常

+0

請澄清你的問題,並告訴我們你已經嘗試過的代碼。 –

回答

1

EDT是一種特殊情況。無論什麼時候被未捕獲的異常停止,它都會重新啓動。

這是一個很好的設計,因爲它可以確保您的整個GUI不會因爲在某個按鈕操作中某個未捕獲的異常而導致崩潰和刻錄。

+0

您是否聲稱在發生異常情況下EDT實際上會關閉? – Kayaman

+0

@Kayaman是的,我以爲它死了,並重新啓動。 –

+0

不,它有一個未捕獲的異常處理程序,可以防止線程死亡。 – Kayaman

2

當線程拋出未被捕獲的異常時,將調用Thread.UncaughtExceptionHandler。如果尚未設置,則會調用默認未捕獲的異常處理程序。處理程序將顯示一個stacktrace,並且很可能會重新啓動,儘管文檔沒有具體說明所採取的步驟。

+0

http://stackoverflow.com/questions/4448523/how-can-i-catch-event-dispatch-thread-edt-exceptions討論EDT異常的發生。 – Kayaman