Программа C++ для обработки непроверенных исключений
Исключения — это ошибки времени выполнения или ненормальные условия, с которыми программа может столкнуться во время выполнения.
Примеры:
- Деление на ноль
- Доступ к массиву за его пределами
- Нехватка памяти
- Недостаточно места на диске
Типы исключений:
- Синхронные исключения : Исключения, возникающие во время выполнения программы из-за какой-либо ошибки во входных данных. Например, такие ошибки, как переполнение и деление на ноль.
- Асинхронные исключения : Исключения, вызванные событиями или ошибками, не связанными (расширенными) с программой и не зависящими от программы. Например, сбои клавиатуры и сбои аппаратного диска.
Обработка исключений в 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 ***