Por que o loop do Visual Studio ao depurar eventos UnhandledException
(Isso parece muito semelhante aoC # UnhandledException de outro segmento mantém loop, mas não estou tentando pegar a exceção aqui, apenas tenha a chance de logar alguma coisa)
Eu tenho alguns códigos C # muito simples que configura um manipulador de eventos UnhandledException, em seguida, lança uma exceção:
class Program
{
static void Main(string[] args)
{
AppDomain currentDomain = AppDomain.CurrentDomain;
//currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException);
currentDomain.UnhandledException += (sender, eventArgs) =>
{
var exception = (Exception) eventArgs.ExceptionObject;
Console.WriteLine("Unhandled exception: " + exception.Message);
};
throw new AccessViolationException("Bleurgh");
}
}
Ele se comporta como eu esperava no console:
Unhandled exception: Bleurgh
Unhandled Exception: System.AccessViolationException: Bleurgh
at UnhandledExceptions.Program.Main(String[] args) in c:\code\sandbox\UnhandledExceptions\UnhandledExceptions\Program.cs:line 20
Mas quando eu tento depurá-lo no Visual Studio ele entra em um loop, indo para o manipulador de eventos, em seguida, soltando para retroceder a exceção.
A mesma coisa acontece quando eu expresso o manipulador como um método estático distinto.
Alguma ideia sobre o que se passa?
Isso está no Visual Studio 2010. EDIT: e .NET 4.