Hardисключения
Что такое function try block?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Function try block — try-catch, оборачивающий всё тело функции (или initializer list конструктора). В основном для конструкторов, чтобы поймать исключения из initializer list.
// Обычная функция
int parse(const std::string& s) try {
return std::stoi(s);
} catch (const std::exception& e) {
std::cerr << e.what();
return -1;
}
// Конструктор: ловит исключения из initializer list
Foo::Foo() try
: member_(expensive()), data_(loadFile()) {
// тело конструктора
} catch (const std::exception& e) {
log(e);
throw; // ВАЖНО: из ctor function-try-block нельзя «вернуть» объект
}Важно: из function try block конструктора нельзя вернуть объект (он ещё не создан) — любое пойманное исключение автоматически перепрокидывается. Поэтому основная польза — логирование/трансформация исключения.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.