16 Обработка исключительных ситуаций

В процессе выполнения скрипта возможно возникновение исключительных ситуаций, ошибок. Если это происходит, то пользователь видит сообщение об ошибке «Опа!…». Вы можете перехватить ошибку и обработать ее особым образом. Для обработки исключительных ситуаций блок кода, в котором они возможны, заключается в составной оператор try.

try
  FS := TFileStream.Create(MyFileName, fmCreate);
except
  MsgBox(‘Ошибка’, ExceptionToString(ExceptionType, ExceptionParam);
end;

Если в блоке try происходит исключение, то выполнение кода прерывается и выполняется код в блоке except. Есть другая конструкция – try..finally:

try
  FS := TFileStream.Create(MyFileName, fmCreate);
  tryfinally
    FS.Free;
  end;
except
  MsgBox(‘Ошибка’, ExceptionToString(ExceptionType, ExceptionParam);
end;

Код в блоке finally выполняется в любом случае, нормально ли отработал код или произошла ошибка. Если в блоке try используется ключевое слово exit (выход из процедуры/функции), то код в блоке finally также выполняется. В операторе try могут быть использованы оба блока:

tryexceptfinallyend;

Вы можете программно сгенерировать исключение, используя процедуру RaiseException:

var
  filename, emsg: string; 
begin
  filename = '';
  try
    if filename = '' then
      RaiseException(erCustomError, 'Имя файла не может быть пустым');except
    emsg := ExceptionToString(ExceptionType, ExceptionParam);end;
end;

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

function ExceptionToString(Err: TIFException; Param: String): String

Формирует по типу исключения строку сообщения об ошибке.

function ExceptionType: TIFException

Возвращает тип возникшего исключения.

function ExceptionParam: String

Возвращает текст сообщения об ошибке.

procedure RaiseException(Err: TIFException; Param: String)

Генерирует исключительную ситуацию.

procedure RaiseLastException

Генерирует последнюю возникшую исключительную ситуацию.