首页 > 其他分享 >Task中专门的异常处理:AggregateException

Task中专门的异常处理:AggregateException

时间:2022-11-22 14:25:25浏览次数:45  
标签:Exception Task ex AggregateException var 异常

//AggregateException:是一个异常集合,因为Task中可能抛出异常,所以我们需要新的类型来收集异常对象
static void Method11()
{
    var task = Task.Factory.StartNew(() =>
    {
        var childTask1 = Task.Factory.StartNew(() =>
        {
            //实际开发中这个地方写你处理的业务,可能会发生异常....
 
            //自己模拟一个异常
            throw new Exception("my god!Exception from childTask1 happend!");
        }, TaskCreationOptions.AttachedToParent);
 
        var childTask2 = Task.Factory.StartNew(() =>
        {
            throw new Exception("my god!Exception from childTask2 happend!");
        }, TaskCreationOptions.AttachedToParent);
    });
    try
    {
        try
        {
            task.Wait();   //1.异常抛出的时机
        }
        catch (AggregateException ex)  //2.异常所在位置
        {
            foreach (var item in ex.InnerExceptions)
            {
                Console.WriteLine(item.InnerException.Message + "     " + item.GetType().Name);
            }
 
            //3.异常集合,如果你想往上抛,需要使用Handle方法处理一下
            ex.Handle(p =>
            {
                if (p.InnerException.Message == "my god!Exception from childTask1 happend!")
                    return true;
                else
                    return false; //返回false表示往上继续抛出异常
            });
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("-----------------------------------------------------");
        Console.WriteLine(ex.InnerException.InnerException.Message);
    }
}

  

标签:Exception,Task,ex,AggregateException,var,异常
From: https://www.cnblogs.com/itjeff/p/16914967.html

相关文章

  • C++异常处理
    语法应用boolfun(){inta=7,b=0;//if(b==0)throw"error!";if(b==0)throw404.1;intc=a/b;}intmain(intargc,constchar**argv){try{......
  • Python爬虫异常怎么用邮件来通知
    正常企业做数据抓取经常会遇到各种故障问题,那么在人不能随时盯着爬虫电脑来防止错误,就需要用email来向自己报告。SMTP邮件协议是Python内置是支持的,他不仅可以发送纯文本的......
  • ASP.NET Core教程-Exception(异常和错误处理)
    更新记录转载请注明出处:2022年11月22日发布。2022年11月20日从笔记迁移到博客。错误处理基础错误处理说明ASP.NETCore中的错误处理分为:​局部Controller中......
  • ArrayList remove删除元素 为什么会出现ConcurrentModificationException异常
    ArrayListremove删除元素先看代码ArrayList<String>list=newArrayList<>();list.add("Java"); list.add("Python");for(Stringitem:list)......
  • 9:自定义异常类_raise抛出异常
    程序开发中,有时候我们也需要自己定义异常类。自定义异常类一般都是运行时异常,通常继承Exception或其子类即可。命名一般以Error、Exception为后缀。自定义异常由rais......
  • 8:traceback模块的使用_异常写入日志文件
    trackback模块【示例】使用Traceback模块打印异常信息#coding=utf-8importtracebacktry:print("step1")num=1/0except:traceback.print_exc()......
  • 6:常见异常汇总和说明
    由于return有两种作用:结束方法运行、返回值。我们一般不把return放到异常处理结构中,而是放到方法最后。【示例】return和异常结构的正确处理方式deftest01():......
  • ENVI新机器学习之异常探测分类工具操作手册
    异常探测是一种用于定位数据集中异常点的数据处理技术。异常值是指与数据集中的已知特征相比被认为不正常的值。例如,如果水是已知的特征,那么除水之外的任何东西都将被视为......
  • python-错误和异常-主动抛
    1.抛异常有时,程序需要主动抛出异常,因为某些情况下,你需要反馈消息给更上层的调用者,告诉它有一些异常情况发生,而你抛出异常的地方,没有能力处理它,因此需要向上抛出异常。这......
  • lwIP协议栈timeouts->next->time赋值导致BusFault异常的解决办法
    所有调用了lwIPAPI的线程都应该使用lwIP的sys_thread_new来创建。mingdu.zhengatgmaildotcom解决办法所有调用了lwIPAPI的线程都应该使用lwIP的sys_thread_new来创建......