Краткий ответ?Взрыв, завершение приложения.
С parashift :
Во время разматывания стека все локальные объекты во всех этих кадрах стека разрушаются.Если один из этих деструкторов выдает исключение (скажем, выбрасывает объект Bar), система времени исполнения C ++ находится в безвыходной ситуации: если она игнорирует Bar и в конечном итоге окажется в
} catch (Foo e) {
, где онаизначально был во главе?Должен ли он игнорировать Foo и искать обработчик
} catch (Bar e) {
?Нет хорошего ответа - любой из вариантов теряет информацию.
Таким образом, язык C ++ гарантирует, что на этом этапе он вызовет terminate()
, а terminate()
убивает процесс.Удар, ты мертв.
Вопросы, связанные с переполнением стека: