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

有什么更方便的选择?

4

2 回答 2

1

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

通常,在应用程序运行时流程将保持不变,这将帮助您了解错误发生的确切时间/地点。

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

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

祝你好运

于 2013-04-28T12:31:29.207 回答
1

这实际上取决于您当前如何处理所有这些异常。

您可以查看AppDomain.UnhandledExceptionand AppDomain.FirstChanceException此处的文档)事件。后者应在将所有托管异常传递给普通异常处理程序之前提供通知。

使用该异常处理程序或您当前的异常处理程序,您将不得不将有关异常的信息存储在某处(在文件、数据库、内存等中),然后按照您的意愿使用它。

请注意,有些例外情况您无法真正恢复,并且在您收集信息期间(因为)可能会发生例外情况。

于 2013-04-28T12:31:43.427 回答