Wrapped AggregateException сообщает только о первом исключении в методе ToString
Я получаю полный набор вложенных исключений при использовании ToString()
метод на AggregateException
непосредственно:
public void GreenTest()
{
var ex = new AggregateException(new Exception("ex1"), new Exception("ex2"));
ex.ToString()
.Should()
.Contain("ex1")
.And
.Contain("ex2");
}
Проблема в том, что я получаю только первое исключение, когда AggregateException
обернут в другое исключение:
public void RedTest()
{
var ex = new Exception("wrapper", new AggregateException(new Exception("ex1"), new Exception("ex2")));
ex.ToString()
.Should()
.Contain("wrapper")
.And
.Contain("ex1")
.And
.Contain("ex2");
}
ex2
отсутствует в результирующей строке. Это ошибка или какая-то известная особенность AggregateException
учебный класс?
1 ответ
Я не думаю, что это ошибка. Более нормальное поведение
Проблема в том, что ToString() на Exception
не буду называть ToString()
из innerException
, но частный ToString(bool,bool)
метод самого класса исключений.
Таким образом, переопределенный метод ToString() AggregateException
не называется.
Конструктор AggregateException установит innerException на первое исключение, переданное конструктору.
В вашем случае это new Exception("ex1")