我正在尝试运行以下代码:
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);
}
}
}
我预计Exception
会在以下位置被捕获:
catch (AggregateException aex)
{
Console.Write(aex.InnerException.Message);
}
但这并没有发生。为什么会这样呢?
你只是打印出task
- 甚至还没有完成。
打印任务不会等待其完成,也不会尝试获取值。
如果您将代码更改为:
try
{
task.Wait();
}
... then我希望它能捕获异常。
(我之前使用的是Task<T>.Result
,但我注意到这是一个没有返回值的任务,所以它只是非通用的Task
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)