我有这两种方法,我确信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”;
}
}
答案 0 :(得分:2)
因为Task可能返回一个或多个异常,它会抛出一个AggregateException,其中包含在Task执行期间发生的所有异常。
您需要枚举InnerExceptions集合以显式处理不同类型的Exception。