码迷,mamicode.com
首页 > 其他好文 > 详细

Task中出现的异常AggregateException

时间:2017-10-25 18:10:40      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:exce   pre   运行   for   start   异常   内容   tty   属性   

static void Main(string[] args)  
{  
    Task t = new Task(() =>
        {  
            throw new Exception("任务并行编码中产生的未知异常");  
        });  
    t.Start();  
 
    try  
    {  
        //若有Result,可求Result  
        t.Wait();  
    }  
    catch (AggregateException e)  
    {  
        foreach (var item in e.InnerExceptions)  
        {  
            Console.WriteLine("异常类型:{0}{1}来自:{2}{3}异常内容:{4}", item.GetType(), Environment.NewLine,  
 item.Source, Environment.NewLine, item.Message);  
        }  
    }  
    Console.WriteLine("主线程马上结束");  
    Console.ReadKey();  
} 

在任何时候,异常处理都是非常重要的一个环节。多线程与并行编程中尤其是这样。如果不处理这些后台任务中的异常,应用程序将会莫名其妙的退出。处理那些不是主线程(如果是窗体程序,那就是UI主线程)产生的异常,最终的办法都是将其包装到主线程上。

在任务并行库中,如果对任务运行Wait、WaitAny、WaitAll等方法,或者求Result属性,都能捕获到AggregateException异常。可以将AggregateException异常看做是任务并行库编程中最上层的异常。在任务中捕获的异常,最终都应该包装到AggregateException中。一个任务并行库异常的简单处理示例。

Task中出现的异常AggregateException

标签:exce   pre   运行   for   start   异常   内容   tty   属性   

原文地址:http://www.cnblogs.com/Markshome/p/7730027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!