c# – 为什么没有捕获到这个异常?

前端之家收集整理的这篇文章主要介绍了c# – 为什么没有捕获到这个异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试运行以下代码
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#相关文章