AggregateException - что делает AggregateException.Выравнивать.)(Свойство innerexception представляете?
Я смотрел на некоторый код в одном из наших приложений, который выглядит следующим образом:
catch (AggregateException ae)
{
this._logger.Log(ae.Flatten().InnerException.ToString(), Category.Exception, Priority.High);
}
мой вопрос таков. Я знаю что!--1--> делает, и я знаю, что AggregateException.Flatten().InnerExceptions
представляет. Однако что делает AggregateException.Flatten().InnerException
(single) представляют?
1 ответов
это будет просто один из non-AggregateExceptions в исходном исключении. Так, например, если у вас есть первоначальный AggregateException
of:
AggregateException
AggregateException
IOException("x")
IOException("y")
IOException("z")
тут InnerException
из сплющенного результата выйдет либо IOException("x")
, IOException("y")
или IOException("z")
. Я не верю, что есть какие-либо гарантии о , который это будет. (Я считаю, что текущее поведение даст версию " z " на данный момент...) Это будет первый из InnerExceptions
на сплющенная версия, но это следует рассматривать как Союз всех первоначально non-AggregateExceptions, без гарантированного заказа.
в принципе InnerException
не очень полезно для AggregateException
. Было бы гораздо полезнее войти все the InnerExceptions
... или просто позвоните ToString()
на исключении верхнего уровня, которое сохранило бы всю структуру...