РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
570 of 815 menu

Оператор throw

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

Синтаксис

throw expression;

Пример

Давайте сгенерируем исключение с числовым значением 404 и перехватим его в блоке catch:

#include <iostream> using namespace std; int main() { try { throw 404; } catch (int err) { cout << "Error: " << err << endl; } return 0; }

Результат выполнения кода:

"Error: 404"

Пример

Давайте сгенерируем исключение со строковым сообщением "abcde" и перехватим его по константной ссылке:

#include <iostream> #include <string> using namespace std; int main() { try { throw string("abcde"); } catch (const string& err) { cout << "Caught: " << err << endl; } return 0; }

Результат выполнения кода:

"Caught: abcde"

Пример

Давайте сгенерируем стандартное исключение std::runtime_error с сообщением "bad thing":

#include <iostream> #include <stdexcept> using namespace std; int main() { try { throw runtime_error("bad thing"); } catch (const exception& err) { cout << err.what() << endl; } return 0; }

Результат выполнения кода:

"bad thing"

Пример

Давайте сгенерируем исключение внутри функции и перехватим его в вызывающем коде:

#include <iostream> using namespace std; void check(int n) { if (n < 0) { throw n; } cout << "OK: " << n << endl; } int main() { try { check(-5); } catch (int err) { cout << "Negative: " << err << endl; } return 0; }

Результат выполнения кода:

"Negative: -5"

Смотрите также

  • оператор try,
    который открывает блок контролируемого кода
  • оператор catch,
    который перехватывает исключение
  • оператор catch-all,
    который перехватывает исключение любого типа
  • класс exception,
    который является базовым классом стандартных исключений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить