32 Урока Borland Delphi



Урок 09 - часть 4


  • try..except
  • try..finally

Первый тип используется для обработки исключительных ситуаций. Его синтаксис:
 
 

try

Statement 1;

Statement 2;

...

except

on Exception1 do Statement;

on Exception2 do Statement;

...

else

Statements; {default exception-handler}

end;

Для уверенности в том, что ресурсы, занятые вашим приложением, освободятся в любом случае, Вы можете использовать конструкцию второго типа. Код, расположенный в части finally, выполняется в любом случае, даже если возникает исключительная ситуация. Соответствующий синтаксис:

try

Statement1;

Statement2;

...

finally

Statements; { These statements always execute }

end;
 
 

      1. Примеры обработки исключительных ситуаций


      Ниже приведены процедуры A,B и C, обсуждавшиеся ранее, воплощенные в новом синтаксисе Object Pascal:
       
       

      type

      ESampleError = class(Exception);

      var

      ErrorCondition: Boolean;

      procedure C;

      begin

      writeln('Enter C');

      if (ErrorCondition) then

      begin

      writeln('Raising exception in C');

      raise ESampleError.Create('Error!');

      end;

      writeln('Exit C');

      end;

      procedure B;

      begin

      writeln('enter B');

      C;

      writeln('exit B');

      end;

      procedure A;

      begin

      writeln('Enter A');

      try

      writeln('Enter A''s try block');

      B;

      writeln('After B call');

      except

      on ESampleError do

      writeln('Inside A''s ESampleError handler');

      on ESomethingElse do

      writeln('Inside A''s ESomethingElse handler');

      end;

      writeln('Exit A');

      end;

      begin

      writeln('begin main');

      ErrorCondition := True;

      A;

      writeln('end main');

      end.

      При ErrorCondition = True программа выдаст:

      begin main

      Enter A

      Enter A's try block

      enter B

      Enter C

      Raising exception in C

      Inside A's ESampleError handler

      Exit A

      end main

      Возможно вас удивила декларация типа 'ESampleError =class' вместо '=object'; это еще одно новое расширение языка. Delphi вводит новую модель объектов, доступную через декларацию типа '=class'. Описание новой объектной модели дается в других уроках. Здесь же достаточно сказать, что исключительные ситуации (exceptions) являются классами, частью новой объектной модели.




      Содержание  Назад  Вперед