#c #exception
Вопрос:
Когда исключение выбрасывается из конструктора (создание/копирование/перемещение) при создании предыдущего исключения, почему оно не std::terminate()
вызывается? Разве это не нарушение обработки предыдущего исключения до того, как предыдущее исключение будет перехвачено, что должно вызвать std::terminate()
?
Ответ №1:
Нет, исключение считается неперехваченным только после завершения инициализации объекта исключения (и до завершения активации обработчика для исключения). Если исключение переосмыслено, оно считается неперехваченным с точки зрения переосмысления.