Пошаговое руководство по С++

С++ ГЛАВНАЯ Введение в С++ С++ Начать Синтаксис С++ Вывод С++ С++ Комментарии Переменные С++ Пользовательский ввод С++ Типы данных С++ Операторы С++ Строки С++ С++ Математика Логические значения С++ Условия С++ Переключатель С++ C++ пока цикл С++ для цикла С++ Перерыв/Продолжение Массивы С++ Ссылки на С++ Указатели С++

Функции С++

Функции С++ Параметры функции С++ Перегрузка функций C++

Классы С++

С++ ООП Классы/объекты С++ Методы класса С++ Конструкторы С++ Спецификаторы доступа C++ Инкапсуляция С++ Наследование С++ Полиморфизм С++ Файлы С++ Исключения С++

С++ Как

Добавить два числа

Примеры С++

Примеры С++ Компилятор С++ Упражнения по С++ Викторина по С++


Исключения С++


Исключения С++

При выполнении кода C++ могут возникать различные ошибки: ошибки кодирования, допущенные программистом, ошибки из-за неправильного ввода или другие непредвиденные вещи.

При возникновении ошибки C++ обычно останавливается и генерирует сообщение об ошибке. Технический термин для этого: C++ выдаст исключение (выдаст ошибку).


С++ попробуй и поймай

Обработка исключений в C++ состоит из трех ключевых слов : tryи :throwcatch

Оператор tryпозволяет определить блок кода, который будет проверяться на наличие ошибок во время его выполнения.

Ключевое throwслово вызывает исключение при обнаружении проблемы, что позволяет нам создать пользовательскую ошибку.

Оператор catchпозволяет определить блок кода, который будет выполняться, если в блоке try произойдет ошибка.

Ключевые слова tryи catchидут парами:

Пример

try {
  // Block of code to try
  throw exception; // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

Рассмотрим следующий пример:

Пример

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Age is: " << myNum;
}

Объяснение примера

Мы используем tryблок для тестирования некоторого кода: если ageпеременная меньше 18, мы создадим throwисключение и обработаем его в нашем catchблоке.

В catchблоке мы ловим ошибку и что-то с ней делаем. Оператор catch принимает параметр : в нашем примере мы используем intпеременную ( myNum) (поскольку мы выбрасываем исключение intтипа в tryблоке ( age)), чтобы вывести значение age.

Если ошибки не возникает (например, если ageвместо 20, 15то это означает, что оно будет больше 18), catchблок пропускается:

Пример

int age = 20;

Вы также можете использовать throwключевое слово для вывода ссылочного номера, например, пользовательского номера/кода ошибки для целей организации:

Пример

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Error number: " << myNum;
}

Обработка любых типов исключений (...)

Если вы не знаете throw тип , используемый в tryблоке, вы можете использовать синтаксис "три точки" ( ...) внутри catchблока, который будет обрабатывать исключения любого типа:

Пример

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "Access denied - You must be at least 18 years old.\n";
}