在Task.WhenAll中捕获异常的方法有以下几种:
try
{
await Task.WhenAll(task1, task2);
}
catch (Exception ex)
{
// 处理异常
}
这种方法会捕获Task.WhenAll中的所有异常,并将它们作为AggregateException的InnerExceptions属性返回。
var tasks = new Task[] { task1, task2 };
Task.WaitAll(tasks);
foreach (var task in tasks)
{
if (task.Exception != null)
{
// 处理异常
}
}
这种方法会等待所有任务完成,并检查每个任务的Exception属性来捕获异常。
var task = Task.WhenAll(task1, task2).WithAggregateException();
try
{
await task;
}
catch (Exception ex)
{
// 处理异常
}
这种方法会返回一个包装了Task.WhenAll的任务,该任务在发生异常时会抛出AggregateException。
请注意,使用以上任一方法,如果Task.WhenAll中的多个任务同时抛出异常,它们将会被包装在AggregateException中返回。您可以使用AggregateException的InnerExceptions属性来获取每个异常。