Иллюстрированный самоучитель по Kylix
ac3ae3b5

Синтаксис конструкции try except try



Листинг 9.1. Синтаксис конструкции try...except try

// здесь находятся операторы защищенного кода
except
on Exception1 do // операторы, выполняемые в случае
// возникновения ошибки 1
on Exception2 do // операторы, выполняемые в случае // возникновения ошибки 2
. . . else
// операторы, выполняемые в случае возникновения ошибки, не являющейся ни ошибкой 1
//ни ошибкой 2 end;

Таким образом, вы размещаете "опасный" участок кода после слова try, и если при выполнении этого кода произойдет исключительная ситуация, оно прекратится и начнут выполняться команды, расположенные после слова except.

В разделе except могут находиться или только операторы обработки исключений, которые начинаются со слова-приставки on, или только произвольные операторы, не являющиеся операторами обработки исключений. В вышеприведенном листинге представлена ситуация, когда в разделе except находятся только операторы обработки исключений. Если в блоке операторов, расположенных после слова try, произошла ошибка Exception1, то будут выполнены только те команды, которые расположены после слов on Exception1 do. Далее объект исключения уничтожается и программа продолжает выполнять операторы, расположенные после слова end; рассматриваемой конструкции.

Раздел после слова else является необязательным и может отсутствовать. Он предназначен для обработки любых других исключений, не предусмотренных в разделе except. Если же раздел else отсутствует, но в защищенном коде произошла исключительная ситуация, не предусмотренная ни одним обработчиком исключений on Exception do, то произойдет стандартная (определенная операционной системой) обработка данной исключительной ситуации с появлением соответствующего информационного окна с сообщением об ошибке.

Рассмотрим оператор обработки исключений более подробно. Как видно из листинга 9.1, данный оператор может присутствовать внутри раздела except или принимать одну из двух форм:

on <класс исключения>
do <оператор>
;

или

on <имя>
: <класс исключения>

do // операторы, в которых можно использовать свойства исключения

В листинге 9.1 мы привели только первую форму представления оператора. Но, так как исключение является объектом, то было бы иногда очень удобно обратиться к его свойствам. Однако для того, чтобы обращаться к свойствам какого-либо объекта, необходимо знать его имя. Вторая форма оператора обработки исключений применяется именно тогда, когда нам нужно обратиться к свойствам возникшего исключения. Для этого исключению присваивается временное имя <имя>
и к его свойствам можно обращаться через точку:

<имя>
.<свойство>

В листинге 9.2 приведена та же конструкция, что и в листинге 9.1, только в блоке except нет операторов обработки исключений. Таким образом, при возникновении любой исключительной ситуации в защищенном блоке будут выполняться операторы, расположенные после слова except.



Содержание раздела