发生了多次异常,重新抛出的正确方法是什么?

时间:2012-02-24 21:12:58

标签: c# exception

public void DoRiskyThings(List<Action> tasks)
{
  List<Exception> exceptions = new List<Exception>();
  foreach(Action task in tasks)
  {
    try {task()}
    catch (Exception e) {exceptions.Add(e)};
  }

  if (exceptions.Any())
  {
    //... what goes here?
  }
}

我想保留所有信息(尤其是消息和堆栈跟踪)。

2 个答案:

答案 0 :(得分:5)

您正在寻找AggregateException class

答案 1 :(得分:2)

只需将您的列表捆绑到一个超级例外:

class MultiException : Exception
{
    public List<Exception> ExceptionsList { get; set; }
}