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

Оператор catch (...)

Оператор catch (...) используется в конструкции try-catch для перехвата исключений любого типа. В отличие от обычного catch, где указывается конкретный тип исключения, многоточие '...' позволяет поймать абсолютно любое исключение. Такой обработчик часто называют "catch-all" (перехватить всё). Он не принимает параметров, поэтому внутри блока нельзя получить информацию о пойманном исключении. Обычно catch (...) ставят последним в цепочке обработчиков, чтобы он поймал те исключения, которые не были обработаны ранее.

Синтаксис

try { // code that may throw } catch (...) { // handle any exception }

Пример

Давайте сгенерируем исключение типа int и перехватим его с помощью catch (...):

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

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

"Caught an exception"

Пример

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

#include <iostream> using namespace std; int main() { try { throw "some error"; } catch (...) { cout << "Caught unknown error" << endl; } return 0; }

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

"Caught unknown error"

Пример

Давайте покажем, как catch (...) работает в связке с обычным catch. Сначала обрабатывается конкретный тип, а затем все остальные:

#include <iostream> using namespace std; int main() { try { throw 123; } catch (const char* msg) { cout << "String: " << msg << endl; } catch (...) { cout << "Fallback handler" << endl; } return 0; }

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

"Fallback handler"

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

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