【发布时间】:2021-11-09 14:24:08
【问题描述】:
今天我和我的同事讨论了如何正确处理 C# 5.0 async 方法中的异常,我们想知道一次等待多个任务是否也会观察到运行时未解包的异常。
考虑以下代码sn-p:
async Task ExceptionMethodAsync()
{
await Task.Yield();
throw new Exception();
}
async Task CallingMethod()
{
try
{
var a = ExceptionMethodAsync();
var b = ExceptionMethodAsync();
await Task.WhenAll(a, b);
}
catch(Exception ex)
{
// Catches the "first" exception thrown (whatever "first" means)
}
}
现在第二个任务会发生什么?两者都将处于故障状态,但现在观察到或未观察到第二个任务的异常?
【问题讨论】:
-
C#这本书深入讨论了这个问题,你可以在那里找到答案。
标签: c# asynchronous exception-handling async-await