C# 当应用程序的工作完成时,如何收集所有异常?
运行应用程序。工作。关上窗户。我想获得一条消息,其中包含有关异常发生顺序及其内容的信息。如何正确收集它们?第一个想法是使用它:C# 当应用程序的工作完成时,如何收集所有异常?,c#,.net,winforms,debugging,C#,.net,Winforms,Debugging,运行应用程序。工作。关上窗户。我想获得一条消息,其中包含有关异常发生顺序及其内容的信息。如何正确收集它们?第一个想法是使用它: public class Collector { public static System.Collections.Concurrent. ConcurrentBag<Exception> ExceptionCollection; } public static void me
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); }
}
公共类收集器
{
公共静态系统.Collections.Concurrent。
并发包例外收集;
}
公共静态无效方法1()
{
试试{}
catch(Exception ex){Collector.ExceptionCollection.Add(ex);}
}
公共静态无效方法n()
{
试试{}
catch(Exception ex){Collector.ExceptionCollection.Add(ex);}
}
什么是更方便的选项?使用文本控件,然后使用预期的应用程序流(方法到方法),在catch内部使用try-catch块,将异常消息添加到文本控件 通常,在应用程序运行时,流是恒定的,这将帮助您了解错误发生的确切时间/地点 为了使它更具体,您可以在catch块内显示方法名(错误发生的地方)以进行测试,并且一旦确定了逻辑流,就可以用数字替换方法名 (如果您希望得到非常一般的答案,请提供一些代码)
好运这取决于您当前如何处理所有这些异常 您可以查看
AppDomain.UnhandledException
和AppDomain.FirstChanceException
()事件。后者应在将所有托管异常传递给正常异常处理程序之前提供通知
使用该异常处理程序或您当前的异常处理程序,您必须将有关异常的信息存储在某个位置(文件、数据库、内存等),然后根据需要对其进行处理
请注意,有些异常是您无法真正恢复的,并且在收集信息的过程中可能会发生异常。查看您的一些代码会有所帮助。请阅读以下内容:我已经使用了try-catch-block,但如果应用程序不能更有效地停止,我不知道如何收集这些块的结果。你能告诉我一个更强大更有用的例子吗?