Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
10.12.2013
Размер:
26.11 Кб
Скачать

ВОПР 4

Класс Exception является прямым потомком базового класса TObject. Вместе со своими потомками он предназначен для обработки исключительных ситуаций (исключений), возникающих при некорректных действиях программы: например, в случае деления на ноль, при попытке открыть несуществующий файл, при выходе за пределы выделен­ной области динамической памяти и т, п.

Защищенные блоки

Для обработки исключений в Object Pascal предусмотрен механизм защищенного блока:

Try try

<операторы> <операторы> except finally

<обработчики исключений> <операторы>

else end;

<операторы> end;

Защищенный блок начинается зарезервированным словом try (попытаться [выполнить]) и завершается словом end. Существует два типа защищенных блоков -except (исключить) и finally (в завершение), отличающихся способом обработки исключения.

В блоке except порядок выполнения операторов таков: сначала выпол­няются операторы секции try.. .except; если операторы выполнены без возникновения исключительной ситуации, работа защищенного блока на этом прекращается и управление получает оператор, стоящий за end; если при выполнении части try возникло исключение, управление получает соответствующий обработчик в секции ex­cept, а если таковой не найден - первый из операторов, стоящих за словом 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.

Соседние файлы в папке Делфа длАТПП-01