Справочник функций и процедур Delphi: Raise

  Навигация по первой букве:

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

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

  Реклама:

|  Частичная и полная шумоизоляция автомобиля.  |

Raise
Ключевое слово
Поднимает исключение unit
  
1 Raise

2 Raise Object reference

3 Raise Object reference At Address pointer

Google  
 
Описание
Ключевое слово Raise создает объект исключения, который передается обработчику исключений Delphi.

Вы можете поднимать исключения только в буквально исключительных случаях. Это не только из-за понесенных накладных расходов ресурсов при выполнении, но также и потому, что есть наиболее лучшие пути для обработки ошибок приложения, таких как коды возврата от функций.

Версия 1:
Raise используется в предложении Except инструкции Try. Она просто, переподнимает текущее исключение в приложении для того, чтобы обратиться к нему на более высоком уровне.

Версия 2:
Использует новый объект исключения для сообщения об исключении. Обычно, вы можете использовать объект Exception, или унаследованный объект Exception.

Вы можете создать объект во время исключения:

Raise Exception.Create('Error happened');

Версия 3: как и версии 2, но с изменением значения адреса исключения. Во всех случаях, когда запрос Raise сделан, выполнения кода переходит к обработчику исключений Delphi - он или заканчивает программу, или использует текущую инструкцию Try, чтобы обработать её.
Похожие команды
Except  Начинает предложение заманивающее в ловушку ошибки Try инструкции

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

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

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

 
Пример кода : Использование функции Raise
var
  fred, jim : string;
begin
  // Установка некоторых типовые названий
  fred := 'Good name';
  jim  := 'Badname  ';

  // Попытка менять эти названия
  try
    ShowMessage(fred+' поменялся = '+SwapNames(fred));
    ShowMessage(jim+' поменялся = '+SwapNames(jim));
  except
    On E : Exception do
      ShowMessage(E.Message);
  end;
end;

// Перестановка первого и второго названия в переданной строке названия
// Поднимает исключение, если название недопустимо
function TForm1.SwapNames(name: string): string;
var
  blankPos : Integer;
  i        : Integer;
  nameLen  : Integer;
begin
  // Очистка строки результата, чтобы указать, что нет никакого результата
  Result := '';

  // Нахождение позицию последнего названия
  blankPos := Pos(' ', name);

  // Если найдено, и позиция меньше конца названия
  // тогда пока всё нормально
  nameLen := Length(name);
  if (blankPos > 0) and (blankPos   then
  begin
    // Нахождение начала второго названия
    i := blankPos + 1;
    repeat
      // Если начало последнего названия найденно, меняем первое и последнее название
      if name[i] <> ' '
      then Result := Copy(name, i, nameLen-i+1) + ' ' +
                     Copy(name, 1, blankPos-1)

      else Inc(i);
    until (i > nameLen) or (Length(Result) > 0);
  end;

  // Не удалось поменять первое и второе название ?
  if Length(Result) = 0
  then Raise Exception.CreateFmt('Недопустимое название : ''%s''', [name]);
end;
Good name поменялся = name Good
Недопустимое название : 'Badname '
 
Пример кода : Поднимаем новый тип исключения
var
  age : Integer;
  exc : EBadAge;
begin
  // Простой код, который поднимает новый тип исключения
  age := 23;
  if age <30
  then
  begin
    // Создание нового объекта исключения EBadAge
    exc := EBadAge.CreateFmt('Bad age : %d',[age]);

    // Теперь поднимаем этот новый объект исключения
    Raise exc;
  end;
end;
Диалог ошибки Delphi покажет сообщение :

Bad age : 23
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook