Читайте также: |
|
<операторы>
end;
Защищенный блок начинается зарезервированным словом try (попытаться [выполнить]) и завершается словом end. Два типа защищенных блоков except (исключить) и finally (в завершение) отличаются способом обработки исключения. В блоке except порядок выполнения операторов таков: сначала выполняются операторы секции try...except; если операторы выполнены без возникновения исключительной ситуации, работа защищенного блока на этом прекращается и управление получает оператор, стоящий за словом end; если при выполнении части try возникло исключение, управление получает соответствующий обработчик в секции except, а если таковой не найден - первый из операторов, стоящих за словом else. В блоке finally операторы в секции finally...end получают управление всегда, независимо от того, возникло исключение в секции try... finally или нет. Если исключение возникло, все операторы в секции try... finally, стоящие за «виновником» исключения, пропускаются и управление получает первый оператор секции finally...end. Если исключения не было, этот оператор получает управление после выполнения последнего оператора секции try...finally.
Обработчики исключений в блоке except имеют такой синтаксис:
оn <класс исключения> do <оператор>;
Здесь оn, do - зарезервированные слова; <класс исключения> - класс обработки исключения; <оператор> - любой оператор Delphi, кроме оператора передачи управления goto на метку вне блока except.
Внимание: имя класса служит своеобразным ключом выбора, а собственно обработка осуществляется оператором, стоящим за do (этот оператор бывает составным, так что обработка исключения может выполняться произвольным количеством операторов Delphi).
Поиск нужного обработчика осуществляется с начала списка вниз до тех пор, пока не встретится класс, способный обрабатывать исключение данного типа. Если подходящего класса не обнаружено, управление передается операторам, стоящим за словом else, а если таковых нет (часть else <операторы> может опускаться), выполняется умалчиваемая обработка исключения.
Если для программиста важен, лишь сам факт возникновения исключения и несущественен тип связанной с ним ошибки, он может опустить в секции except...end обработчики вместе со словом else, оставив в ней только необходимый код реакции на любую ошибку:
Try
...
Except
ShоwМеssаgе('Ошибка! ');
...
end;
Защищенные блоки могут вкладываться друг в друга на неограниченную глубину, так как везде, где в предыдущих описаниях указывался параметр <оператор>, могут использоваться любые операторы Delphi, в том числе и try... except или try... finally:
try
...
try
...
finally
end;
except
оn EMatchError do
begin
...
try
...
try
...
end;
...
end;
...
end;
...
end;
Дата добавления: 2015-07-19; просмотров: 50 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Защищенные блоки | | | Класс Exception |