考虑这个简单的控制台应用程序:
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
throw new Exception();
}
}
}
我会在Visual Studio 2010或Visual Studio 2012 Beta中使用调试器运行此程序。当程序出现异常时,调试器会停止,但当我按F5继续(或选择“调试”|“继续”)时,它又会再次停在相同的异常处。我必须停止调试才能退出程序。我原本期望按F5后程序能够正常退出。有人知道为什么会出现这种情况吗?[编辑] 我已经将一个答复标记为答案,但是如果看一下以下代码,可以看到调试器行为的一个奇怪结果:
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.");
}
}
}
在调试器下运行此代码,按F5多次加载,然后查看输出。你会看到很多“未处理的异常”消息,尽管代码实际上只抛出了一次异常。调试器导致异常被抛出多次!这就是我觉得奇怪的地方。