在Visual Studio中,如果我創建一個新的Windows窗體,並把下面進入Form_Load事件:如果我在Windows窗體的Form_Load事件上拋出異常,怎麼會發生什麼事?
throw new Exception();
什麼也沒有發生。我可以在這裏放置一個斷點,看看這行代碼已經到達,但沒有任何異常似乎被拋出。如果我將相同的語句放入按鈕的單擊事件中並單擊該按鈕,程序就會像我期望的那樣崩潰。
這是怎麼回事?
謝謝
在Visual Studio中,如果我創建一個新的Windows窗體,並把下面進入Form_Load事件:如果我在Windows窗體的Form_Load事件上拋出異常,怎麼會發生什麼事?
throw new Exception();
什麼也沒有發生。我可以在這裏放置一個斷點,看看這行代碼已經到達,但沒有任何異常似乎被拋出。如果我將相同的語句放入按鈕的單擊事件中並單擊該按鈕,程序就會像我期望的那樣崩潰。
這是怎麼回事?
謝謝
如果你在調試器外面運行它,它會被拋出。您需要配置調試器以解除未處理的異常。
Debug->Exceptions...
Common Language Runtime Exceptions
System
System.Exception Click the "Thrown" checkbox.
複製的[此](http://stackoverflow.com/questions/1583351/silent-failures-in-c-seemingly-unhandled-exceptions-that-does-not-crash-the-pr) :看起來像它的一個已知的bug。另請注意,它只會在調試模式下發生。 – SimpleVar 2012-07-22 12:38:17
@YoryeNathan就這樣!感謝您的鏈接! – JMK 2012-07-22 12:39:53
還有一個解決方法找到[這裏](https://connect.microsoft.com/VisualStudio/feedback/details/357311/silent-exceptions-on-x64-development-machines):打電話給System.Diagnostics。 OnLoad開始時的Debugger.Break()然後在不調試的情況下運行應用程序(Ctrl + F5)。這會在窗口句柄創建期間導致NativeWindow.windowProc == NativeWindow.Callback(而不是NativeWindow.DebuggableCallback),因此將顯示OnLoad期間引發的異常。一旦調用Break(),Visual Studio就可以附加到進程並且可以像平常一樣進行調試。 – SimpleVar 2012-07-22 12:42:13