C# 使用AggregateException 信息

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 使用AggregateException 信息相关的知识,希望对你有一定的参考价值。

为了得到所有失败任务的异常信息,可以将 Task.WhenAll 返回的结果写到一个Task 变量中。这个任务会一直等到所有任务都结束。否则,仍然可能错过抛出的异常。上一小节中,catch 语句只检索到第一个任务的异常。不过,现在可以访问外部任务的Exception 属性了。Exception 属性是AggregateException类型的。这个是常类型定义了InnerExceptions 属性(不只是InnerException),它包含了等待中的所有异常的列表。现在,可以轻松遍历所有异常了。

代码如下

private static async void ShowAggregatedException() 

  Task taskResult = null;
  try
  
    Task tl = ThrowAfter(2000, "first"); 
    Task t2 = ThrowAfter(1000, "second");
    await (taskResult = Task.WhenAll(t1, t2));
  
  catch (Exception ex)
  
    Console.WriteLine($"handled ex.Message");
    foreach (var ex1 in taskResult.Exception.InnerExceptions)
    
      Console.WriteLine($"inner exception ex1.Message");
    
  

以上是关于C# 使用AggregateException 信息的主要内容,如果未能解决你的问题,请参考以下文章

Web Api 的 PostAsync HttpClient 错误 - System.AggregateException“任务已取消。”

我想等待抛出 AggregateException,而不仅仅是第一个异常

Nuget 包 - 提要 (VSTS):尝试添加源时抛出异常“System.AggregateException”

IoT 边缘上的流分析作业不起作用,异常:System.AggregateException

为啥不等待 Task.WhenAll 抛出 AggregateException?

C#使用NLOG System.TypeInitializationException,类型初始值设定项引发异常