Asp.net
如何打破 ASP.NET 中未處理的異常?
在 Visual Studio 中調試應用程序時,有 2 個選項可用於中斷異常。拋出異常時立即中斷,僅在未擷取異常時才中斷。這在開發桌面應用程序時效果很好。但是,在開發 ASP.NET 應用程序時,所有異常最終都會被 IIS 中的程式碼擷取。是否可以禁用此行為,以便當我的 ASP.Net 應用程式碼無法擷取異常時調試器中斷?
編輯:
為了清楚起見,我不想在拋出異常時中斷,因為很多時候它們都被我的程式碼處理得很好,而且我不想在每個異常上都停下來。我只想停止我的程式碼未處理的異常。
編輯:
這在 Visual Studio 2008 中似乎不是問題。在 Visual Studio 2003 中,所有異常都被視為使用者處理,因為 ASP.NET 執行時擷取了所有異常,以免關閉 Web 伺服器程序。似乎在 Visual Studio 2008 中,這種類型的異常擷取在檢查使用者未處理的異常時不會被計算在內。
在 Debug->Exceptions 下,檢查 Common Language Runtime Exceptions 的“Thrown”列(至少)。檢查“拋出”以獲取您感興趣的其他異常。
現在,如果附加了調試器(活動調試或“附加到程序”),您的 ASP.NET 應用程序將因 CLR 異常(或您選擇的任何其他異常)而中斷。
$$ EDIT $$ 如果您只想中斷未處理的異常,請在 Debug->Exceptions 下,取消選中所有 Exception types 上的“Thrown”,並確保為您感興趣的 Exceptions 檢查“User-unhandled”。
然後,如果附加了調試器,您的 ASP.NET 應用程序將在您選擇的每個使用者未處理的異常上中斷,而不管執行時最終會擷取異常的事實。樣本:

