《C#并发编程经典实例》学习笔记—2.9 处理 async void 方法的异常

本文探讨了在C#中处理async void方法抛出异常的问题,建议尽量避免使用async void,但若必须使用,可在方法内部try-catch或利用SynchronizationContext在全局异常处理中捕获异常。文章提到了.NET框架和不同平台的支持情况,并推荐了Nito.AsyncEx库作为在不支持SynchronizationContext平台上的解决方案。
摘要由CSDN通过智能技术生成

问题

需要处理从 async void 方法传递出来的异常。

解决方案

书中建议尽量不写 async void 这样的方法,如果非写不可,建议在方法内部 try catch 所有的代码,即在方法内部处理好所有可能的异常。

当然处理 async void 方法的异常,还有一个办法,即全局异常处理方法中进行异常处理,当然这个办法算不是办法的办法。全局异常处理可以处理 async void 方法的异常,是因为当异常从 async void 方法抛出的时候,可以在 SynchronizationContext Class (System.Threading) | Microsoft Docs 引发出来。前提是当前平台支持SynchronizationContext。

SynchronizationContext 适用于

.NET Core
3.0 2.2 2.1 2.0 1.1 1.0
.NET Framework
4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5 4.0 3.5 3.0 2.0
.NET Standard
2.1 2.0 1.6 1.4 1.3 1.2 1.1 1.0
UWP
10.0
Xamarin.Android
7.1
Xamarin.iOS
10.8
Xamarin.Mac
3.0

全局处理异常机制:WPF 有 A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值