c# – 为什么没有捕获到这个异常?
发布时间:2020-12-15 07:47:20 所属栏目:百科 来源:网络整理
导读:我正在尝试运行以下代码: class Program{ static void Main(string[] args) { var task = Task.Factory.StartNew(() = { throw new ApplicationException("message"); }); try { task.ContinueWith(t = Console.WriteLine("End")); } catch (AggregateExcep
我正在尝试运行以下代码:
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); } 但这不会发生.为什么会这样? 解决方法
你只是打印出任务 – 甚至还没有完成.
打印出任务不会等待它完成,或者尝试获取值. 如果您将代码更改为: try { task.Wait(); } …然后我希望它能抓住异常. (我以前使用的是Task< T> .Result,但我注意到这是一个没有返回值的任务,所以它只是非通用的Task.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容