自定义异常作为聚合异常抛出
本文关键字:异常 自定义异常 | 更新日期: 2023-09-27 18:17:13
从Task.Run(…)抛出自定义异常时。结果,catch块找到AggregateException而不是CustomException。为什么?
public MainPage()
{
this.InitializeComponent();
CallAMethod();
}
static bool AMethod()
{
return Task.Run(() =>
{
throw new CustomException();
return false;
}).Result;
}
static bool CallAMethod()
{
try
{
return AMethod();
}
catch (CustomException e)
{
//not caught
throw;
}
catch (Exception ex)
{
//caught?
throw;
}
}
下面是自定义Exception类
class CustomException : Exception
{
}
from @colinsmith
"当您使用Task. wait()或Task. wait()时。结果出现错误的任务,导致任务出现错误的异常会被传播,但它不会被直接抛出……相反,它被包装在AggregateException对象中,然后被抛出。…你可以访问其中的CustomException
参见:处理AggregateExceptions的扁平化