Task中的异常处理
最简单的方式
var t = new Task(() => {throw new Exception("unknow excption");});t.Start();try{t.Wait();}catch (AggregateException e){foreach (var item in e.InnerExceptions){Console.WriteLine("异常类型\t{0}\n来自\t{1}\n异常内容\t{2}", item.GetType(), item.Source, item.Message);}}
缺点:这个会阻塞当前线程。下面是改进版
var t = new Task(() => {throw new Exception("unknow excption");});t.Start();var cat = t.ContinueWith(task =>{foreach (var item in task.Exception.InnerExceptions){Console.WriteLine("异常类型\t{0}\n来自\t{1}\n异常内容\t{2}", item.GetType(), item.Source, item.Message);}}, TaskContinuationOptions.OnlyOnFaulted); //指定只应在延续任务前面的任务引发了未处理异常的情况下才安排延续任务Console.WriteLine("主线程退出");Console.ReadKey();
缺点:异常没有回到主线程。继续改进
var t = new Task(() => {throw new Exception("unknow excption");});t.Start();var cat = t.ContinueWith(task =>{throw task.Exception;}, TaskContinuationOptions.OnlyOnFaulted); //指定只应在延续任务前面的任务引发了未处理异常的情况下才安排延续任务Console.WriteLine("主线程退出");Thread.Sleep(1000);//异常处理try{cat.Wait();}catch (AggregateException e){foreach (var item in e.InnerExceptions){Console.WriteLine("异常类型\t{0}\n来自\t{1}\n异常内容\t{2}", item.InnerException.GetType(), item.InnerException.Source, item.InnerException.Message);}}
Task中的异常处理相关推荐
- Task 编程中的异常处理
Task 编程中的异常处理 参考文章: (1)Task 编程中的异常处理 (2)https://www.cnblogs.com/beginor/archive/2012/07/05/2577692.h ...
- 编写高质量代码改善C#程序的157个建议——建议86:Parallel中的异常处理
建议86:Parallel中的异常处理 建议85阐述了如何处理Task中的异常.由于Task的Start方法是异步启动的,所以我们需要额外的技术来完成异常处理.Parallel相对来说就要简单很多,因 ...
- 【C#/.NET】.NET6中全局异常处理
微信公众号:趣编程ACE 关注可了解每日一更的.NET日常实战开发技巧,欢迎公众号留言开发 获取源码; .NET6中全局异常处理 异常处理是我们在程序开发中不可或缺的一环,下文我将会结合程序Sampl ...
- kotlin中的异常处理_如何使用assertFailsWith在Kotlin中测试异常
kotlin中的异常处理 by Daniel Newton 丹尼尔·牛顿 如何使用assertFailsWith在Kotlin中测试异常 (How to test exceptions in Kotl ...
- SpringMVC 中的异常处理
SpringMVC 中的异常处理 异常处理的思路 系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减 ...
- PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别)
PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别) 一.总结 一句话总结: throwable接口+Error类 在PHP7更新中有一条:更多的Error变为可捕获的Exce ...
- 【转】Java中关于异常处理的十个最佳实践
原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...
- Swift41/90Days - 面向轨道编程 - Swift 中的异常处理
问题 在开发过程中,异常处理算是比较常见的问题了. 举一个比较常见的例子:用户修改注册的邮箱,大概分为以下几个步骤: 接收到一个用户的请求:我要修改邮箱地址 验证一下请求是否合法,将请求进行格式转化 ...
- Laravel 中的异常处理
Laravel 中的异常处理 参考文章: (1)Laravel 中的异常处理 (2)https://www.cnblogs.com/feiffy/p/10253842.html (3)https:// ...
最新文章
- 2018年爱奇艺校招笔试
- 深度学习网络图的绘制
- mariadb mysql同步_mysql/mariadb 主从复制实现数据库同步
- 带通 带阻滤波器 幅频响应_二阶有源带通滤波器设计
- 60v5g无刷电机矢量控制器_完成一个最小FOC矢量控制系统所需的基本模块和功能配置...
- 游戏开发中 UI 是由谁来完成的?
- 树莓派也跑Docker和.NET Core
- 高效快速中值滤波算法c语言,快速中值滤波及c语言实现.docx
- 编程语言API性能大比拼
- 如何将日志系统切换到 Logback?
- 小项目--猜年龄游戏
- fastdfs 原理与过程
- python内置函数sorted()
- 【电信学】【2019.07】基于ATOLL的5G网络规划与优化
- 【DSP】离散系统的因果性判断
- 哪个106短信服务平台好?这4点要参考!
- 微信的支付(二维码,APP)
- Linux权限维持之suid后门、ssh后门
- 【报告分享】2020美好城市指数:短视频与城市繁荣关系白皮书(附下载)
- 完全二叉树 和 满二叉树的区别