我在 MSDN 上研究了这篇文章,以及关于这个主题的一些问题/答案,但无法弄清楚为什么下面的代码不起作用(在示例控制台应用程序中)。
根据 MSDN,预计会抛出 AggregateException,其中包含一个带有hello
消息的内部异常。相反,此hello
异常未处理。它发生在调试器内部。
如果您按继续或独立运行,它会按预期工作。有什么办法可以避免在 VS 中一直按 continue 吗?毕竟,Try...Catch
块中的任何内容都被认为是在单线程编程模型中处理的。否则,调试可能是一场噩梦。
VB.NET
Sub Main()
Try
Task.Factory.StartNew(AddressOf TaskThatThrowsException).Wait()
Catch ex As AggregateException
Console.WriteLine(ex.ToString) 'does not get here until you hit Continue
End Try
End Sub
Private Sub TaskThatThrowsException()
Throw New Exception("hello") 'exception was unhandled
End Sub
C#
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
try {
Task.Factory.StartNew(TaskThatThrowsException).Wait();
}
catch (AggregateException ex) {
Console.WriteLine(ex.ToString()); //never gets here
}
}
static void TaskThatThrowsException() {
throw new Exception("hello"); //exception was unhandled
}
}
}
我在这里有什么明显的遗漏吗?