2013-04-28 44 views
-4

運行該應用程序。工作。關閉它的窗戶。我希望收到一條消息,其中包含有關例外情況的信息及其內容。如何收集他們的權利?第一個想法是使用它:如何在工作完成時收集應用程序的所有異常?

 public class Collector 
    { 
     public static System.Collections.Concurrent. 
      ConcurrentBag<Exception> ExceptionCollection; 

    } 

    public static void method1() 
    { 
     try { } 
     catch (Exception ex) { Collector.ExceptionCollection.Add(ex); } 
    } 

    public static void methodN() 
    { 
     try { } 
     catch (Exception ex) { Collector.ExceptionCollection.Add(ex); } 
    } 

什麼是更方便的選項?

+0

有助於查看您的部分代碼。 – Alexey 2013-04-28 12:23:15

+0

閱讀此:http://msdn.microsoft.com/en-us/library/ms173160.aspx – flq 2013-04-28 12:33:59

+0

我已經使用try-catch塊,但我不明白如果應用程序不能更有效地停止如何收集此塊的結果。 – Wido 2013-04-28 12:47:51

回答

1

這實際上取決於您目前如何處理所有這些例外情況。

您可以查看AppDomain.UnhandledExceptionAppDomain.FirstChanceExceptiondocumentation here)事件。後者應該在所有被管理的異常傳遞給一個正常的異常處理程序之前提供通知。

使用要麼或您當前的異常處理程序,你將不得不在一些地方保存有關異常的信息(無論是文件,數據庫,內存等),後來用它做你想要什麼。

注意到,有一些例外,你不能真正從和中(因爲)你的信息收集可能發生的異常中恢復。

1

使用文字控制,然後用應用的(方法方法)預期流中使用try catch塊的掣子內添加異常消息字面控制。

通常,流程在應用程序運行時會保持不變,這將幫助您瞭解發生錯誤的時間/位置。

爲了使它更具體的您可以測試顯示catch塊的方法名(發生錯誤的位置),一旦你知道有關邏輯流,你可以用數字替換方法名。

(如果您期待一個非常通用的答案,請提供一些代碼)。

好運

+0

你可以看到我的代碼示例(首先我的想法)。你能告訴我更多強大和有用的例子嗎? – Wido 2013-04-28 12:58:26

相關問題