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.)
总结以上是内存溢出为你收集整理的c# – 为什么没有捕获到这个异常?全部内容,希望文章能够帮你解决c# – 为什么没有捕获到这个异常?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)