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

本文关键字:异常 工作 应用程序 | 更新日期: 2023-09-27 18:11:25

运行应用程序。的工作。关上它的窗户。我希望获得一条消息,其中包含有关异常的信息,按照异常发生的顺序及其内容。如何收集呢?第一个想法是使用它:

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

什么是更方便的选择?

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

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

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

使用该方法或当前的异常处理程序,您将不得不将有关异常的信息存储在某个地方(在文件,数据库,内存等中),然后根据您的需要处理它。

请注意,有一些异常是您无法真正恢复的,并且在您收集信息的过程中(因为)可能会发生异常。

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

通常在应用程序运行时该流是恒定的,这将帮助您了解错误发生的确切时间/地点。

为了使它更具体,你可以在catch块中显示方法名(错误发生的地方),一旦你确定了逻辑流,你可以用数字替换方法名。

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

好运