如何在工作完成后收集所有应用程序异常?

时间:2013-04-28 12:21:26

标签: c# .net winforms debugging

运行该应用程序。工作。关闭它的窗口。我希望收到一条消息,其中包含有关异常的信息,以及它们的内容。如何收集它们吧?第一个想法是使用它:

       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); }
    }

什么是更方便的选择?

2 个答案:

答案 0 :(得分:1)

使用Literal控件然后使用预期的应用程序流(方法到方法)在catch内部使用try catch块将异常消息添加到文字控件。

通常,流程在应用程序运行时期间会保持不变,这有助于您了解错误发生的时间/地点。

为了使其更具体,您可以在catch块中显示方法名称(发生错误的位置)以进行测试,一旦确定逻辑流程,就可以用数字替换方法名称。

(如果您期望得到非常通用的答案,请提供一些代码)。

祝你好运

答案 1 :(得分:1)

这实际上取决于您当前如何处理所有这些例外情况。

您可以查看AppDomain.UnhandledExceptionAppDomain.FirstChanceExceptiondocumentation here)事件。后者应该在将所有托管异常传递给普通异常处理程序之前提供通知。

使用那个或当前的异常处理程序,您必须在某处(在文件,数据库,内存等中)存储有关异常的信息,然后再根据需要进行处理。

请注意,有些例外情况无法真正从中恢复,并且在收集信息期间可能会发生异常。