我剛剛遇到了.Net中異常處理的奇怪行爲。 (我在MS Visual Studio 2008中使用C#,但是我在這裏看到的一個問題似乎暗示着我在整個.Net世界看到的都是真實的。)我寫了一個普通的WinForm應用程序。我故意導致未處理的異常在任何try塊之外的form_load事件處理程序中拋出。我沒有收到通知。如果在普通方法中發生未處理的異常,則會彈出一條消息,告訴我發生了異常,並向我提供有關該問題的一些信息。但是在處理程序中,代碼只是悄悄地退出函數,而不讓任何人知道它發生了。如果我添加一個try/catch塊,這個異常會按預期捕獲。在表單加載事件中未處理的異常
這種行爲是否真的發生在所有事件處理程序中?這是預期的行爲?如果是這樣,是因爲如果事件處理程序意外停止,那麼壞事發生的危險太大了?
你可能創建了一個UnhandledThreadExceptionEventHandler嗎? – 2013-03-07 21:19:45
從我讀的,它被看作是這個[問題]相同的問題http://stackoverflow.com/questions/10647551/exceptions-not-being-raised-in-c-just-kicks-out-of-該例程是這個錯誤/ 10652522#10652522 – Stephan 2013-03-07 21:26:39
謝謝你的回覆。您引用的問題似乎涉及在Visual Studio中進行調試時的行爲。我觀察到VS內外的這種行爲。但我承認,這兩次都是調試版本。我沒有在發佈版本中嘗試我的測試。 – 2013-03-08 15:29:10