Ao depurar um aplicativo de console, o Visual Studio fica preso em um loop de relatório de exceção. Por quê?
Considere este simples aplicativo de console:
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
throw new Exception();
}
}
}
Eu corro isso sob o depurador no Visual Studio 2010 ou no Visual Studio 2012 Beta.
Quando faço isso, naturalmente, o depurador pára na exceção. OK até agora.
Mas quando eu pressionar F5 para continuar (ou escolha Depurar | Continuar) ele pára na mesma exceção novamente. Eu tenho que parar a depuração para o programa sair. Eu esperava que o programa saísse quando eu pressionei F5.
Alguém sabe por que se comporta da maneira que faz?
[EDITAR]
Eu marquei uma resposta como resposta, mas para ver uma consequência estranha do comportamento do depurador, considere o seguinte código:
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
throw new Exception();
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine("Unhandled Exception.");
}
}
}
Execute isso sob o depurador e pressione F5 várias vezes e, em seguida, observe a saída. Você verá muitas mensagens de "Exceção não tratada", apesar de o código ter sido lançado apenas uma vez. O depurador está causando a exceção a ser lançada várias vezes! Isso é o que eu acho estranho.