Я приведу пример фрагмента программы, ниже будет дано подробное описание данного фрагмента.

try

A := StrToInt (Input.Text);

except

ShowMessage (‘Ошибка ввода целого числа!!!’);

Input.SelectAll;

Exit;

end;

В данном фрагменте программы с помощью зарезервированных слов try, except и end реализуется так называемый защищённый блок. Такими блоками программист может защитить программу от краха от ошибки.

После слова try ставится выражение, которое необходимо выполнить в программе. В данном случае программа пробует с помощью функции StrToInt преобразовать строковое значение из текстового поля с именем Input в целое значение.

Защита действует следующим образом:

Если при выполнении операторов, расположенных после слова try, была обнаружена ошибка, то выполняются операторы, расположены после слова except. Если ошибка не обнаружена, то выполняются операторы, следующие после слова end. В данном случае с помощью функции ShowMessage программа выводит сообщение с указанным текстом, после чего программа выделяет содержимое текстового поля и предлагает ввести ошибочное значение заново.

Ошибочным значением может быть: строковое значение, дробное значение или вообще не введённое значение.

Другой вариант обработки исключительных ситуаций:

try

finally

end;

В данном случае выполнится в любом случае, но при ошибке в управление будет передано .

Конструкцию finally…end удобно использовать, например, при загрузке из файла изображения в TBitMap.

Например:

procedure TForm1.Button1Click(Sender: TObject);

var

bitmap: TBitMap;

begin

bitmap := TBitMap.Create;

try

bitmap.LoadFromFile(‘bitmap.bmp’);

Canvas.Draw(bitmap);

finally

bitmap.Free;

end;

end;

Вначале bitmap инициируется с помощью конструктора Create. Затем в теле программы в bitmap загружается изображение из файла. Даже при возникновении ошибки необходимо вызвать деструктор класса с помощью метода Free. Поэтому для этого используется конструкция finally…end.

Иногда программе необходимо самостоятельно вызвать исключение. Для этого используется зарезервированное слово raise.

Вообще, для обработки исключительных ситуаций используется класс TException, а также его многочисленные потомки.

Инициировать исключение можно так:

try

x := StrToInt(st);

if x < 0 then raise EAbort.Create('Число меньше нуля!'); except ShowMessage(‘Ошибка!!!’); end; В этом случае при ошибке преобразования строки в число появится сообщение об ошибке, а также при отрицательном числе программа вызывает собственное исключение, при этом также появится сообщение об ошибке.

News Reporter