2010-05-07 99 views
6

在我的應用程序中,我使用消息框來顯示錯誤信息。C#消息框錯誤消息

try 
{ 
    // Something... 
} 
catch (SystemException ex) 
{ 
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

起初很好,但是隨着我的程序的增長,越來越難找到產生這個錯誤的try-catch塊。有沒有辦法顯示產生錯誤的代碼或函數的行?我正在使用Microsoft Visual C#2008速成版。謝謝。

+0

在顯示錯誤框的情況下,您通常希望從用戶隱藏混亂的細節(如StackTrace)。不過,我強烈建議您在某處(使用StackTrace)記錄異常,以便稍後進行調試。有幾個很好的日誌包,比如NLog或者Log4Net,你可以用它來提供幫助。 – 2010-05-07 16:31:55

回答

6

這會給你的關於方法的信息很多導致錯誤(堆棧跟蹤)

1

只顯示Exception.StackTrace。它將包含各種有用的信息,這些信息可以幫助您找到有害的代碼行。

0

Exception.StackTrace,這往往是一個消息框多一點。 Exception.TargetSite.Name也應該有幫助。

0

你想查看ex.StackTrace(),它會給你拋出異常的位置的完整細節。您可能還想檢查InnerException。

0

爲什麼不在錯誤消息中添加一些額外信息以便您更容易地找到它?您可以在「錯誤」字符串之後添加更多文本,具體取決於正在創建消息框的位置。

拋出的異常包含多個函數,以便您可以更詳細地解釋錯誤。

+0

我不想爲每個可能的catch塊想出一個新的錯誤信息(我可能永遠不會看到)。 – 2010-05-07 15:31:29

+0

我的意思是沿着使用ex.ToString()的行,而不是手動添加文本。 – 2010-05-07 15:37:34

0

有幾個選項可供您使用。如果你想給上下文信息

    1. 把東西在你的消息框中顯示堆棧跟蹤信息,如果調試版本行號將被納入

    不過,我要提醒周圍這種做法,如果你發現你太多了,你不知道在哪裏,我會開始考慮重新構造你的代碼,以確保你沒有問題。

  • +0

    我不想爲每個可能的catch塊想出一個新的錯誤信息(我可能永遠不會看到)。 – 2010-05-07 15:47:09