3 回答

TA貢獻1993條經(jīng)驗 獲得超6個贊
重寫,我已經(jīng)弄清楚它來自哪里。Windows在64位版本的Windows 7上運行時,如果在32位進程中引發(fā)異常,Windows會出現(xiàn)異常。它會吞下由響應(yīng)由64位Windows管理器觸發(fā)的Windows消息而運行的代碼引發(fā)的任何異常。與WM_SHOWWINDOW一樣,導(dǎo)致Load事件被引發(fā)的消息。
調(diào)試器起作用,因為當它處于活動狀態(tài)時,Winforms應(yīng)用程序中的正常異常捕獲被關(guān)閉以允許調(diào)試器停止異常。在這種情況下不會發(fā)生這種情況,因為Windows 7首先吞下異常,阻止調(diào)試器看到它。

TA貢獻1998條經(jīng)驗 獲得超6個贊
請參閱:OnLoad異常消失的情況。它是按設(shè)計進行的(盡管極其愚蠢的設(shè)計,IMO)。您的異常是在展開堆棧期間遇到內(nèi)核模式邊界。如果可以,切換到其他一些事件,或者不要讓異常逃脫; 如果你期望你的調(diào)試器在OnLoad上自動中斷未處理的異常,這沒有用。

TA貢獻1804條經(jīng)驗 獲得超7個贊
WinForms框架類不會自動捕獲任何異常。這不是一個錯誤,它是設(shè)計 - 他們會做什么與例外?
您必須在任何情況下?lián)碛凶约旱膖ry / catch塊,或者處理Application.ThreadException
事件。該事件對于某些通用處理代碼(如記錄異常或顯示錯誤對話框)很有幫助,但顯然它不能對任何單個事件或異常類型執(zhí)行任何特定操作。
添加回答
舉報