Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
Except
Ключевое слово
Начинает предложение заманивающее в ловушку ошибки Try инструкции unit
  
1 Try
   Statement
  {Statement...}
 Except
   Statement
  {Statement...}
 End;

2 Try
   Statement
  {Statement...}
 Except
   Statement
  {Statement...}
 End;
Описание
Ключевое слово Except используется для отметки начала блока инструкций, которые обрабатывают исключение в предложении Try. Если блок Except может обработать исключение, то программа не заканчивается.

Except имеет два различных синтаксиса:

Версия 1

В этой версии, если предложение Try генерирует исключение, предложение Except выполняется. Это используется для предпринятия альтернативного действия, когда что-нибудь неожиданно идет не так, как надо. Однако, предложение except не может определить тип ошибки.

Версия 2

Она подобна 1 версии, но определяет различные действия для различных типов исключений, типа EInOutError. Предложение Else может использоваться как перехватчик для всех неожиданных типов исключений. Общий тип исключения Exception может использоваться для захвата всех типов исключений.

Назначение Имени (Name) исключения, текста сообщения исключения (Name.Message) может использоваться для отображения в сообщении или других использований.

Когда исключение поднимается во 2 версии 2, то если исключение не обработано инструкциями On или Else, то выполняется проверка, находимся ли мы во вложенном блоке Try. Если да, то обрабатывается пункт Except своего родительского Try. Если нет или пункт Else не был найден, программа завершается.

Предложение Else, в действительности, не является необходимым - лучше использовать On E:Exception Do, для универсальной обработки особых ситуаций, так как оно обеспечивает сообщение об ошибках (E.Message).

Важно: Вы можете определить тип ошибки, которая произошла, используя универсальную обработку особых ситуаций - On E:Exception Do. Где E - указатель на объект исключения, который создан условием исключения. E.ClassName дает тип исключения, типа 'EDivByZero', как показано в конечном коде примера.
Похожие команды
Finally  Начинает безоговорочный раздел кода инструкции Try

On  Определяет обработку особых ситуаций в предложении Try Except

Raise  Поднимает исключение

Try  Начинает код, который перехватывает ошибки

 
Пример кода : Деление на ноль с простым блоком Except
var
  number, zero : Integer;
begin
  // Попытка делить целое число на нуль - чтобы поднять исключение
  Try
    zero   := 0;
    number := 1 div zero;
    ShowMessage('number / zero = '+IntToStr(number));
  Except
    ShowMessage('Неизвестная ошибка');
  end;
end;

Неизвестная ошибка
 
Пример кода : Деление на ноль с предложением Except On
var
  number, zero : Integer;
begin
  // Попытка делить целое число на нуль - чтобы поднять исключение
  Try
    zero   := 0;
    number := 1 div zero;
    ShowMessage('number / zero = '+IntToStr(number));
  Except
    on E : Exception do
      ShowMessage(E.ClassName+' ошибка с сообщением : '+E.Message);
  end;
end;

EDivByZero ошибка с сообщением :Division by zero
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия