Выбор ответа Junior Исключения спрашивают часто обновлено

Непойманное исключение

Вопрос

Что произойдёт, если исключение не поймал ни один catch?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Вызовется std::terminate, и программа аварийно завершится. Если подходящего обработчика нет, вызывается std::terminate, который по умолчанию вызывает std::abort.

Варианты ответа

  1. Исключение будет проигнорировано, выполнение продолжится после throw
  2. Вызовется std::terminate, и программа аварийно завершитсяправильный ответ
  3. Программа завершится штатно и вернёт код 0 после раскрутки стека
  4. Компилятор не даст собрать программу с непойманным исключением

Разбор

Если подходящего обработчика нет, вызывается std::terminate, который по умолчанию вызывает std::abort. Раскрутится ли стек до этого, решает реализация.

  • Игнорирования исключений в C++ нет.
  • Код возврата будет ненулевым (сигнал SIGABRT).
  • Компилятор не проверяет, что исключения пойманы: в C++ нет checked exceptions.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме