Программирование / Делфа длАТПП-01 / Билет4
.docВОПР 4
Класс Exception является прямым потомком базового класса TObject. Вместе со своими потомками он предназначен для обработки исключительных ситуаций (исключений), возникающих при некорректных действиях программы: например, в случае деления на ноль, при попытке открыть несуществующий файл, при выходе за пределы выделенной области динамической памяти и т, п.
Защищенные блоки
Для обработки исключений в Object Pascal предусмотрен механизм защищенного блока:
Try try
<операторы> <операторы> except finally
<обработчики исключений> <операторы>
else end;
<операторы> end;
Защищенный блок начинается зарезервированным словом try (попытаться [выполнить]) и завершается словом end. Существует два типа защищенных блоков -except (исключить) и finally (в завершение), отличающихся способом обработки исключения.
В блоке except порядок выполнения операторов таков: сначала выполняются операторы секции try.. .except; если операторы выполнены без возникновения исключительной ситуации, работа защищенного блока на этом прекращается и управление получает оператор, стоящий за end; если при выполнении части try возникло исключение, управление получает соответствующий обработчик в секции except, а если таковой не найден - первый из операторов, стоящих за словом else.
В блоке finally операторы в секции finally...end получают управление всегда, независимо от того, возникло исключение в секции try.. .finally или нет. Если исключение возникло, все операторы в секции try.. .finally, стоящие за «виновником» исключения, пропускаются и управление получает первый оператор секции finally.. .end. Если исключения не было, этот оператор получает управление после выполнения последнего оператора секции try... finally.
Обработчики исключений в блоке except имеют такой синтаксис:
on <класс исключения> do <оператор>;
Здесь on, do - зарезервированные слова; <класс исключения> - класс обработки исключения; <оператор> - любой оператор Object Pascal, кроме оператора передачи управления goto на метку вне блока except.
Обратите внимание: имя класса служит своеобразным ключом выбора, а собственно обработка осуществляется оператором, стоящим за do (этот оператор может быть составным, так что обработка исключения может занимать произвольное количество операторов Object Pascal).
Поиск нужного обработчика осуществляется с начала списка вниз до тех пор, пока не встретится класс, способный обрабатывать исключение данного типа. Если подходящего класса не обнаружено, управление передается операторам, стоящим за словом else, а если таковых нет (часть else <операторы> может опускаться), выполняется умалчиваемая обработка исключения.
Защищенные блоки могут вкладываться друг в друга на неограниченную глубину, т. к. везде, где в предыдущих описаниях использовались <операторы> или <оператор>, могут использоваться любые операторы Object Pascal, в том числе и try...except или try...finally.
Класс Exception является родительским классом для всех классов-исключений. Этот класс объявляется в модуле SysUtils.