Mediumstd-exceptionhierarchy

Что такое std::exception и её иерархия?

1Постановка

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

2Решение

`std::exception` — базовый класс стандартной иерархии из <stdexcept>, с виртуальным what(). Делится на logic_error (ошибки инвариантов) и runtime_error (ошибки выполнения).

std::exception
├── std::logic_error
│   ├── std::invalid_argument
│   ├── std::domain_error
│   ├── std::length_error
│   └── std::out_of_range
├── std::runtime_error
│   ├── std::range_error
│   ├── std::overflow_error
│   └── std::underflow_error
├── std::bad_alloc      (new failure)
└── std::bad_cast       (dynamic_cast failure)

Пользовательские исключения наследуют от std::runtime_error/std::logic_error — это даёт готовый what().

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

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

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