2010-07-27 81 views
2

我在寫一些相當複雜的C#代碼。我發現我的代碼拋出一個異常(在輸出窗口中註明),但調試器沒有插入。我確實有異常集來解決用戶未處理的CLR異常。尋找c#異常處理程序

由於調試器沒有入侵,我假設調試堆棧中的某處必須有try {}。

問題是,我找不到它。

如何找到拋出異常的這行代碼的異常處理程序?

+0

代碼中的異常發生在哪裏?它是Windows窗體代碼嗎? WPF?安慰? – 2010-07-27 11:35:49

回答

3

在Visual Studio中打開例外窗口。展開適當的樹來查找正在拋出的異常並檢查「Thrown」複選框。下一次在調試模式下拋出異常(未捕獲),調試器將立即中斷。

2

檢查跟蹤,以便您可以從拋出異常的位置看到。

2

設置拋出異常拋出Debug - >異常到'Exceptions'對話框,然後'Common Language Runtime Exceptions'檢查'Thrown'複選框。

只要發生任何異常,這將停止。

您可能會發現異常數量驚人的是拋出你的「正常」代碼執行的一部分(之類的插座異常或解析例外當你的UI是數據綁定),在這種情況下,切換關閉上扔了「突破'複選框並在您的違規代碼附近放置一個斷點。調試到斷點,然後切換到斷點並繼續調試器。

0

您可以嘗試捕獲應用程序級別excpetion。只需添加到您的主要方法,下面的代碼:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

和處理所有expections在下面的方法:

 static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 
    { 
     //Log Excpetion or place breakpoint 
    } 

如果將處理程序中的斷點,你將能夠看到一個異常的堆棧跟蹤。

希望這會有所幫助。

+0

這很可能無濟於事。他的應用程序沒有崩潰,這是很好的。 – Will 2010-07-27 11:45:48

+0

是的,你可能是對的:) – 2010-07-27 11:52:40