Хелпикс

Главная

Контакты

Случайная статья





finally. except. Класс Exception



finally

<операторы>

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;

 

Класс Exception

Класс Exception является родительским классом для всех классов-исключений. Этот класс объявляется в модуле SysUtils следующим образом:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.