2014-01-27 2 views
1

Я прохожу через несколько подпрограмм и по какой-либо причине эти процедуры могут генерировать исключение. Я собираю исключение из каждой итерации и сохраняю в словаре. После завершения всей итерации я хочу отправить собранное исключение вместе с информацией об итерации. Из моего прошлого опыта я знаю, что сообщения об исключениях обычно являются инструментами, и я хотел бы знать, что есть элегантный способ выбросить это исключение и показать их в хорошем смысле.Как относиться к списку исключений?

static void Main(string[ ] args) { 
    Dictionary<int, Exception> exceptionDict = new Dictionary<int, Exception>(); 
    for(int i = 0; i < 5; i++) { 
    try { 
     if(i == 0) { 
     throw new Exception("test0"); 
     } 
     else if(i == 1) { 
     throw new Exception("test1"); 
     } 
     else { 
     throw new Exception("test"); 
     } 
    } 
    catch(Exception ex) { 
     exceptionDict.Add(i, ex); 
    } 
    } 
    if(exceptionDict.Count > 0) { 

    Exception ex = new AggregateException(exceptionDict.Values.ToList()) ; 
    System.IO.File.WriteAllText(@"..\err.txt", ex.InnerException.StackTrace.ToString()); 
    throw ex; 

    } 
} 
+0

вы должны знать, что итерация произошло исключение делать? – wdosanjos

+1

'' сообщения об исключении обычно слишком длинны «...» и отображают их красиво ». Эти два утверждения должны вам что-то сказать. Исключения * * действительно довольно длинные, и они содержат * много * очень полезной информации. Но не обязательно, чтобы информация отображалась * пользователю. Приложение должно регистрировать данные исключения, но должно показывать что-то простое и удобное для пользователя. В идеале это сообщение не будет раскрывать основные детали реализации (которые потенциально могут быть использованы), как это делают исключения. – David

+1

Ваш вопрос больше о метании или части отображения? –

ответ

3

Use AggregateException. Вот ссылка

http://msdn.microsoft.com/en-us/library/system.aggregateexception(v=vs.110).aspx

В основном бросают новый AggregateException (исключения);

где исключение является IEnumerable<Exception>

+1

Как это помогает как-то относиться к исключениям? – Dennis

+1

throw new AggregateException (исключения) – Murdock

+1

OP хочет «отображать исключения в красивом виде». «Произошла одна или несколько ошибок», это не очень хорошо, ИМО. – Dennis

Смежные вопросы