2011-04-24 55 views
1

我最近切換到我的處理未處理的異常,這種方式:爲什麼winforms未處理的異常框有時會繼續?

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

這將是很好的記錄,什麼不可以,但我已經失去了舊未處理的異常框爲「繼續」的能力。我目前的處理程序只是提示重啓。很多時候,單擊繼續在那個未處理的異常框中實際上保持程序運行正常。這個怎麼用?有沒有一種方法可以允許我繼續捕捉未處理的異常呢?說如果異常是某種類型的,我可以嘗試像「未處理的異常」框一樣「繼續」嗎?或者這是不可能的?

有沒有人知道異常世界的細節?很想聽聽你們的想法。

+0

請刪除這個問題,我沒有馬上注意到,當我發現像這樣的異常時,它看起來像未處理的盒子那樣繼續。 – 2011-04-30 10:44:49

回答

2

應用程序終止,因爲這是CLR的默認行爲。如果你有一個未處理的異常,這意味着你的程序中有一個嚴重的缺陷,對這種情況的最佳處理是關閉整個應用程序。

但是,如果您想在這種未處理的異常之後繼續,還有一種技術。您可以在應用程序中創建第二個域,並在此處加載庫。不同應用程序域中的例外是獨立的。看看我的blog entry這個,有一些示例代碼可用。

相關問題