gpt4 book ai didi

c# - 这是用任务处理 AggregateException 的错误方法吗

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:51 24 4
gpt4 key购买 nike

需要优雅地处理 AggregateExceptions。这种方式是否正确?

try
{
var message = await _queue.ReceiveAsync();
// rest of code
//
var response = await process(body);
}
catch (AggregateException ae)
{
foreach (var e in ae.InnerExceptions)
{
Trace.TraceError(e.Message);
}
}

最佳答案

正如@erikkallen 所指出的,如果您使用await,您不应该得到AggregateException

但是,如果你不是,你就会错误地处理它们。

聚合异常实际上可以是异常的(即,它可以包含其他AggregateExceptions,后者又包含更多异常,等等)。因此,您应该使用 Flatten:

foreach (var e in ae.Flatten().InnerExceptions)

参见 Attached Child Tasks and Nested AggregateExceptions在 MSDN 上。

关于c# - 这是用任务处理 AggregateException 的错误方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com