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

Выбрасывание исключения в C++

Сбой можно вызвать самим, а не ждать его от библиотеки. Оператор throw создает исключение и сразу прерывает текущий участок. Дальше выполнение ищет подходящий catch. Если его нет, программа завершается с сообщением об ошибке:

int main() { throw std::runtime_error("message"); return 0; }

В учебных задачах удобно выбрасывать готовые типы из stdexcept. Исключение std::invalid_argument подходит, когда параметр нарушает правило:

void requireEven(int n) { if (n % 2 != 0) { throw std::invalid_argument("even only"); } std::cout << n << "\n"; } int main() { try { requireEven(3); } catch (const std::invalid_argument& e) { std::cout << "rejected\n"; } return 0; }

Исключение std::runtime_error удобно, если деление на ноль проверяют вручную до операции /:

int safeDiv(int a, int b) { if (b == 0) { throw std::runtime_error("zero divisor"); } return a / b; } int main() { try { std::cout << safeDiv(8, 0) << "\n"; } catch (const std::runtime_error& e) { std::cout << "cannot divide\n"; } return 0; }

Текст в конструкторе исключения доступен через e.what() в блоке catch. Сообщения в коде пишите на английском, как и имена переменных.

Создайте функцию printIfPositive с параметром n. Для n <= 0 выбросьте std::invalid_argument с сообщением "not positive". Иначе выведите n.

В main вызовите printIfPositive(-2) внутри try. В catch для std::invalid_argument выведите e.what().

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