Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpIhOE 80 of 150 menu
◀ ▶

Свое исключение в C++

Ошибку можно передать наружу объектом. Команда throw прерывает обычный ход и несет этот объект. Команда catch его ловит.

Свой класс ошибки наследуют от std::exception. Метод what возвращает текст ошибки. Слово noexcept здесь нужно, потому что так помечен what у std::exception: метод обещает не передавать новую ошибку. Запишем AppError:

#include <exception> class AppError : public std::exception { public: AppError(const char* text) : text(text) { } const char* what() const noexcept override { return text; } private: const char* text; };

Создадим объект AppError, бросим его и поймаем в catch:

int main() { try { throw AppError("bad value"); } catch (const AppError& err) { std::cout << err.what() << "\n"; } return 0; }

Сделайте класс RangeError, наследующий std::exception, бросьте его с текстом out of range и выведите сообщение в catch.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить