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

时间:2016-06-29 16:07:56

标签: c# asp.net-mvc exception-handling task

我有这两种方法,我确信DoSomethingAsync返回FormatException。然而它总是在最后一次捕获“异常”中被捕获

为什么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”;
        }
   }

1 个答案:

答案 0 :(得分:2)

因为Task可能返回一个或多个异常,它会抛出一个AggregateException,其中包含在Task执行期间发生的所有异常。

您需要枚举InnerExceptions集合以显式处理不同类型的Exception。