Hardfunction-try-block

Что такое function-try-block?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Function-try-block оборачивает всё тело функции, включая ctor-initializer. Используется для ловли исключений из initializer-list конструктора.

class Derived : public Base {
    Member m_;
public:
    Derived(int x)
    try : Base(x), m_(x) {           // try захватывает initializer-list
        // тело конструктора
    } catch (const std::exception& e) {
        std::cerr << "ctor failed: " << e.what();
        // неявный throw; — объект не создан, «проглотить» нельзя
    }
};

Для конструктора catch обязан перебросить (явно или неявно). На практике используется редко — RAII-члены решают большинство проблем.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.