С++. Лекция 7. Обработка исключений.

Обработка исключений.

7.1. Исключения.

Синтаксически исключение (exception) – это объект произвольного типа, а обработка исключений – это механизм для передачи управления и исключения в специальный блок, который называется обработчиком исключения. Механизм обработки исключения состоит из четырех компонент: исключения, инструкции throw, try-блока и catch-блока, которые организованы следующим образом:

где инструкция throw выбрасывает исключение; блок try содержит код, который может выбросить исключение; блок catch описывает обработчик исключения и должен следовать непосредственно за блоком try. Допускается использование нескольких последовательных блоков catch. Если внутри блока try произошел выброс исключения, то управление передается первому обработчику исключения, тип которого соответствует типу выброшенного исключения. После обработки исключения управление передается на первую инструкцию, которая следует за последним обработчиком исключения. Например,

Часто вся информация об исключении определяется только его типом. В этом случае для типа исключения используют пустые структуры. Например, в нашем случае можно было бы определить исключение типа

struct      Zero_divide {};

Тогда наша программа выглядела бы следующим образом:

Обратим внимание на то, что оператор throw должен выбросить объект типа Zero_divide, а не сам тип. Поэтому в этом операторе используется конструктор по умолчанию для объекта типа Zero_divide.