这是来自“C# 5.0 in a Nutshell”的示例代码
TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
Task.Factory.StartNew (() =>
{
Task.Factory.StartNew (() => { throw null; }, atp);
Task.Factory.StartNew (() => { throw null; }, atp);
Task.Factory.StartNew (() => { throw null; }, atp);
})
.ContinueWith (p => Console.WriteLine (p.Exception),
TaskContinuationOptions.OnlyOnFaulted);
我在我的 VS2012 设置中检查了“CLR 异常”:“用户未处理时中断”选项并运行此代码提供了 VS 的“用户代码未处理 NRE 异常”弹出窗口throw null;
我试图在 ContinueWith 和稍后的 Wait 上尝试捕获异常,但仍然得到未处理的异常。
我觉得打开“CLR exceptions”的解决方案:“break on user-unhandled” off 似乎是错误的,因为我实际上处理了这个异常。那么管理它的正确方法是什么?