Mediumterminate
Что такое std::terminate и когда вызывается?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`std::terminate` — фатальный обработчик, по умолчанию вызывает std::abort. Вызывается, когда runtime не может продолжить.
void mustNotThrow() noexcept {
throw std::runtime_error("oops"); // noexcept бросил → terminate!
}
// Свой handler для логирования перед аварийным выходом
std::set_terminate([]() {
std::cerr << "terminating: "
<< (std::current_exception()
? "uncaught exception" : "unknown");
std::abort();
});Случаи: непойманное исключение; бросок из noexcept-функции; бросок из деструктора во время unwinding. Восстановиться после terminate нельзя.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.