运行该应用程序。工作。关闭它的窗口。我希望收到一条消息,其中包含有关异常的信息,以及它们的内容。如何收集它们吧?第一个想法是使用它:
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); }
}
什么是更方便的选择?
答案 0 :(得分:1)
使用Literal控件然后使用预期的应用程序流(方法到方法)在catch内部使用try catch块将异常消息添加到文字控件。
通常,流程在应用程序运行时期间会保持不变,这有助于您了解错误发生的时间/地点。
为了使其更具体,您可以在catch块中显示方法名称(发生错误的位置)以进行测试,一旦确定逻辑流程,就可以用数字替换方法名称。
(如果您期望得到非常通用的答案,请提供一些代码)。
祝你好运
答案 1 :(得分:1)
这实际上取决于您当前如何处理所有这些例外情况。
您可以查看AppDomain.UnhandledException
和AppDomain.FirstChanceException
(documentation here)事件。后者应该在将所有托管异常传递给普通异常处理程序之前提供通知。
使用那个或当前的异常处理程序,您必须在某处(在文件,数据库,内存等中)存储有关异常的信息,然后再根据需要进行处理。
请注意,有些例外情况无法真正从中恢复,并且在收集信息期间可能会发生异常。