捕获来自另一个Task方法的特定异常

本文关键字:异常 方法 Task 另一个 | 更新日期: 2023-09-27 17:53:03

我有这2个方法,我知道肯定DoSomethingAsync返回FormatException。但是它总是在最后一个catch " Exception "

中被捕获

为什么CallSomethingAsync永远不会捕获FormatException?

       public Task DoSomethingAsync()
       {
            //Do something that throws a FormatException 
            return Task.FromResult(0);           
       }
   public virtual string CallSomethingAsync()
   {
        try
        {
            this.DoSomethingAsync().Wait();
            return “Ok”;
        }
        catch (FormatException)
        {
            return “FormatException”;
        }
        catch (Exception)
        {
            return “GeneralException”;
        }
   }

捕获来自另一个Task方法的特定异常

由于任务可能返回一个或多个异常,因此它抛出一个AggregateException,其中包含在任务执行期间发生的所有异常。

你需要枚举InnerExceptions集合来显式地处理不同类型的Exception