2012-02-24 52 views
2
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? 
    } 
} 

我想保留所有的信息(尤其是消息和堆栈跟踪)。发生了多个异常,重新抛出的正确方法是什么?

+1

看到这个高度upvoted答案:http://stackoverflow.com/a/178464/555547 – Jason 2012-02-24 21:14:24

+0

@Jason这是伟大的,但重新抛出的该方法仅从捕获块内工作。我在它之外。 – 2012-02-24 21:16:06

+1

@Jason:他想抛出_multiple_异常。这是行不通的。 – SLaks 2012-02-24 21:16:06

回答

5

您正在查找的是AggregateException class

+0

啊,我需要.NET 4,但我看到我可以自己做。谢谢。 – 2012-02-24 21:15:22

2

只是捆绑你的名单分成一个超级例外:

class MultiException : Exception 
{ 
    public List<Exception> ExceptionsList { get; set; } 
} 
相关问题