我研究了
this article on MSDN,以及有关此主题的SO的一些问题/答案,但无法解释为什么下面的代码不起作用(在示例控制台应用程序中).
根据MSDN,预计会抛出AggregateException,它将包含一个带有hello消息的内部异常.相反,这个hello异常未处理.它发生在调试器内部.
如果按“继续”或“独立运行”,则按预期工作.有没有办法避免在VS中一直按下继续?毕竟,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 } } }
我有什么明显的遗失吗?