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 подскажет развёрнутый ответ в реальном времени.