2013-04-28 34 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

相关问题