昨天我遇到了WebRequest和AppDomain.UnhandledException:
的奇怪行为AppDomain.CurrentDomain.UnhandledException += (a, b) =>
{
Console.WriteLine("gotcha!");
};
var request = WebRequest.Create("http://google.com");
request.BeginGetResponse((async) =>
{
Console.WriteLine("request finished");
throw new Exception("done"); // exception does
//not trigger AppDomain.Unhandledexception handler.
}, null);
Console.WriteLine("request started");
Console.ReadLine();
问题是响应回调中的异常不会触发UnhandledException事件处理程序。我已经检入调试器 - 在默认域中执行回调。因此,显然异常会在到达堆栈顶部之前被捕获。我对这种行为感到好奇。也许我错过了一些观点,但在我看来这是非常意外的。如果有人澄清,我会很高兴。代码是在.net 4.0下运行的控制台应用程序。