我正在尝试运行以下代码:
class Program { static void Main(string[] args) { var task = Task.Factory.StartNew(() => { throw new ApplicationException("message"); }); try { task.ContinueWith(t => Console.WriteLine("End")); } catch (AggregateException aex) { Console.Write(aex.InnerException.Message); } } }
我预计异常将被捕获在以下位置:
catch (AggregateException aex) { Console.Write(aex.InnerException.Message); }
但这不会发生.为什么会这样?
解决方法
@H_301_13@ 你只是打印出任务 – 甚至还没有完成.打印出任务不会等待它完成,或者尝试获取值.
如果您将代码更改为:
try { task.Wait(); }
…然后我希望它能抓住异常.
(我以前使用的是Task< T> .Result,但我注意到这是一个没有返回值的任务,所以它只是非通用的Task.)