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")

Другие вопросы по тегам