Программа C++ для обработки непроверенных исключений

Опубликовано: 10 Января, 2023

Исключения — это ошибки времени выполнения или ненормальные условия, с которыми программа может столкнуться во время выполнения.

Примеры:

  • Деление на ноль
  • Доступ к массиву за его пределами
  • Нехватка памяти
  • Недостаточно места на диске

Типы исключений:

  • Синхронные исключения : Исключения, возникающие во время выполнения программы из-за какой-либо ошибки во входных данных. Например, такие ошибки, как переполнение и деление на ноль.
  • Асинхронные исключения : Исключения, вызванные событиями или ошибками, не связанными (расширенными) с программой и не зависящими от программы. Например, сбои клавиатуры и сбои аппаратного диска.

Обработка исключений в C++ предназначена для обработки только синхронных исключений в программе. Цель обработки исключений — создать подпрограмму, которая проверяет и отправляет исключительное состояние для выполнения подходящего кода. Процедура должна выполнять следующие обязанности:

  • Обнаружить проблему (выбрать исключение)
  • Сообщает об обнаружении ошибки (генерировать исключение)
  • Получить информацию об ошибке (перехватить исключение)
  • Предпримите корректирующие действия (обработайте исключение)

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

Синтаксис оператора try:

try{
     statement1;
     statement2;
   }

Когда исключение найдено, оно создается с помощью оператора throw в блоке try.

Синтаксис инструкции throw

throw(excep);
throw excep;
throw;// re-throwing of an exception

Блок catch определяется ключевым словом ' catch ' исключения и соответствующим образом обрабатывает его. Блок catch, перехватывающий исключение, должен следовать сразу за блоком try исключения.

Синтаксис оператора catch:

try{
     statement1;
     statement2;
   }
catch (argument)
{
  statement3;// action to be taken
}

При обнаружении исключения начинается выполнение блока catch. Оператор catch может содержать или не содержать аргумент типа исключения, это необязательно. Когда аргумент объявлен в блоке catch, этот аргумент можно использовать в блоке catch. После выполнения блока catch выполняются строки внутри блоков. Если исключение не найдено, блок catch игнорируется, а при обнаружении несоответствия программа завершается.

Программа C++, иллюстрирующая исключение деления на ноль

Выход:

Division by zero: 0

Программа на C++, иллюстрирующая исключение индекса массива за пределами границ

Выход:

1
2
3
4
5
Array Index out of Bounds Exception: 5

Программа C++ для создания нескольких исключений и определения нескольких операторов catch

Выход:

Demo of Multiple catches
caught an null value 
*** end of try catch ***
 
Caught a positive value 
*** end of try catch ***
 
Caught a Negative value 
*** end of try catch ***