我有以下代码:
if (errorList != null && errorList.count() > 0)
{
foreach (var error in errorList)
{
throw new Exception(error.PropertyName + " - " error.ErrorMessage, error.EntityValidationFailed);
}
}
为什么在列表中出现多个错误时只抛出一个异常?
答案 0 :(得分:10)
如果未处理,则会出现异常中断代码执行。
所以代码如下:
foreach (var error in errorList)
{
try
{
throw new Exception(error.PropertyName + " - " error.ErrorMessage, error.EntityValidationFailed);
}
catch(...) {}
}
将引发多个异常,准确errorList.Length
次,这将由catch(..)
在循环体内处理,如果不从{{>重新抛出 {{1>} 1}},将留在那里。
答案 1 :(得分:9)
你只能抛出一个例外,但你可以创建一堆Exceptions
,然后在最后抛出一个AggregateException
。
var exceptions = new List<Exception>();
foreach (var error in errorList)
{
exceptions.Add(new Exception(error.PropertyName + " - " error.ErrorMessage, error.EntityValidationFailed));
}
if(exceptions.Any())
{
throw new AggregateException(exceptions);
}