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
On
Ключевое слово
Определяет обработку особых ситуаций в предложении Try Except unit
  
 Try
   Statement
 {Statement...};
 Except
    On {Name :} Exception type Do Statement;
  {Else Statement}
  End;
Описание
Ключевое слово On определяет инструкцию обработки особых ситуаций в Except части Try инструкции.

Если указанное исключение (Exception) произошло в Try инструкции, то выполняется команда Do.

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

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

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

Для всех исключений объект Exception, это тот, на который ссылаются в пункте On. Эти объекты обычно происходят от класса Exception.

Вы можете определить тип исключения, которое произошло, посмотрев свойство ClassName, которое дает тип исключения, типа 'EDivByZero', как показано в примере.
Похожие команды
Except  Начинает предложение заманивающее в ловушку ошибки Try инструкции

Finally  Начинает безоговорочный раздел кода инструкции Try

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

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

 
Пример кода : Деление на ноль с пунктом 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
 
Пример кода : Деление на ноль с многочисленными пунктами Except On
var
  number, zero : Integer;
begin
  // Попытка деления целого числа на нуль, чтобы вызвать исключение
  number := -1;
  Try
    zero   := 0;
    number := 1 div zero;
    ShowMessage('number / zero = '+IntToStr(number));
  except
    // Наше первое исключение не будет вызвано
    On E : EInOutError do
      ShowMessage('IO ошибка : '+E.Message);
    // Это исключение будет вызвано
    On E : EDivByZero do
      ShowMessage('Ошибка деления на zero : '+E.Message);
    // Перехват других ошибок
    Else
      ShowMessage('Неизвестная ошибка');
  end;
end;
Ошибка деления на zero : Division by zero
 


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



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





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


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