我正在使用FirstChanceException事件来记录有关任何引发的异常的详细信息。
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
Console.WriteLine("Inside first chance exception.");
};
throw new Exception("Exception thrown in main.");
}
这按预期工作。但是,如果在事件处理程序中抛出异常,则会发生堆栈溢出,因为该事件将递归引发。
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
throw new Exception("Stackoverflow");
};
throw new Exception("Exception thrown in main.");
}
如何处理事件处理程序中发生的异常?
编辑:
有一些答案表明我将代码包装在 try/catch 块中的事件处理程序中,但这不起作用,因为在处理异常之前引发了事件。
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
try
{
throw new Exception("Stackoverflow");
}
catch
{
}
};
throw new Exception("Exception thrown in main.");
}