16 Обработка исключительных ситуаций
В процессе выполнения скрипта возможно возникновение исключительных ситуаций, ошибок. Если это происходит, то пользователь видит сообщение об ошибке «Опа!…». Вы можете перехватить ошибку и обработать ее особым образом. Для обработки исключительных ситуаций блок кода, в котором они возможны, заключается в составной оператор try.
try FS := TFileStream.Create(MyFileName, fmCreate); except MsgBox(‘Ошибка’, ExceptionToString(ExceptionType, ExceptionParam); end;
Если в блоке try происходит исключение, то выполнение кода прерывается и выполняется код в блоке except. Есть другая конструкция – try..finally:
try FS := TFileStream.Create(MyFileName, fmCreate); try … finally FS.Free; end; except MsgBox(‘Ошибка’, ExceptionToString(ExceptionType, ExceptionParam); end;
Код в блоке finally выполняется в любом случае, нормально ли отработал код или произошла ошибка. Если в блоке try используется ключевое слово exit (выход из процедуры/функции), то код в блоке finally также выполняется. В операторе try могут быть использованы оба блока:
try … except … finally … end;
Вы можете программно сгенерировать исключение, используя процедуру 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
Генерирует последнюю возникшую исключительную ситуацию.