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

Ветка catch

Ветка catch используется вместе с блоком try для обработки исключений. Когда в блоке try возникает исключение, управление передаётся в соответствующий блок catch. В параметр ветки catch мы передаём тип исключения, которое хотим перехватить, а внутри фигурных скобок размещаем код обработки. Можно указать имя переменной, чтобы получить доступ к объекту исключения.

Синтаксис

try { // код, который может выбросить исключение } catch (тип_исключения имя_переменной) { // код обработки исключения }

Пример

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

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

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

"Caught: 123"

Пример

Давайте перехватим исключение типа const char* и выведем сообщение об ошибке:

#include <iostream> using namespace std; int main() { try { throw "something went wrong"; } catch (const char* err) { cout << "Error: " << err << endl; } return 0; }

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

"Error: something went wrong"

Пример

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

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

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

"Double: 5.5"

Пример

Давайте перехватим исключение стандартного типа std::runtime_error и вызовем его метод what:

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

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

"Caught: bad thing"

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

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