如何在应用程序完成工作后收集其所有异常
本文关键字:异常 工作 应用程序 | 更新日期: 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.UnhandledException
和AppDomain.FirstChanceException
(这里的文档)事件。后者应该在所有托管异常被传递给普通异常处理程序之前提供通知。
使用该方法或当前的异常处理程序,您将不得不将有关异常的信息存储在某个地方(在文件,数据库,内存等中),然后根据您的需要处理它。
请注意,有一些异常是您无法真正恢复的,并且在您收集信息的过程中(因为)可能会发生异常。
使用Literal控件,然后按照预期的应用程序流程(方法到方法)在catch内部使用try catch块,将异常消息添加到Literal控件中。
通常在应用程序运行时该流是恒定的,这将帮助您了解错误发生的确切时间/地点。
为了使它更具体,你可以在catch块中显示方法名(错误发生的地方),一旦你确定了逻辑流,你可以用数字替换方法名。
(如果您希望得到一个非常通用的答案,请提供一些代码)。
好运