Easycustom-exception
Как создать свой класс исключения?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Стандартный паттерн — наследование от std::runtime_error. Базовый класс хранит сообщение и реализует what().
class HttpError : public std::runtime_error {
int status_;
public:
HttpError(int status, const std::string& msg)
: std::runtime_error(msg), status_(status) {}
int status() const noexcept { return status_; }
};
// Использование
throw HttpError(404, "not found");Можно добавить поля (код ошибки, контекст). Для цепочки причин в C++11 — std::throw_with_nested.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.