Взаимодействие с Delphi

Простой пример из лабораторной работы № 2

Понятие исключения.

Обработка исключений.

Методы T Win Control.

1) function Can Focus: Boolean;

Function Focused: Boolean;

procedure Set Focus; (устанавливает фокус).

Лекция № 7

Отлавливание семантических исключений.

2) Во время выполнения программы могут случаться некоторые исключения.

Причины появления:

· переполнение; 10: аппаратные.

· по вводу- выводу;

· логические ошибки ввода-вывода (попытка чтения после конца файла).

Основные методы защиты:

· предварительные проверки.

· перехват случившихся исключений.

4.9.2. Оператор try … finally.

try

ф1

….
последовательность операторов, при которых если возникнет исключение, передать управление finally.

фN

finally

фF1

….
эти операторы выполняются в любом случае.

фFM

end.

Например, при обработке файла.

...

Var Bfil: file;

Begin

System. Assign (Bfil, ‘...’);

Reset (Bfil);

try

{оператор ввода-вывода с Bfil }

finally

System (close(Bfil));

end; {try}

end;

...

4.9.3. try … except …

try

Op1;

...

OpN;

except

on Exception1 do s1;

on...

else SM;

end;

Классы исключений:

I/O EI и Out Error(ввод – вывод ошибок). Это группа исключений динамической памяти.

· 1) Арифметические: integer – EIntError; float – EMathError;

· 2) Преобразования: EConvertError

· 3) Аппаратные исключения: EFault

1. EIntError®

· EDivideZero

· ERangeError (ошибка диапазона)

· EIntOverflow (целочисленное переполнение).

2. E Math Error

· EZeroDivide

· EOverflow

· EUnderflow (маленькое)

· EInvalidOP (неправильная операция).

EConvertError, например при выполнении функций:

· IntToStr.

· StrToInt

· StrToFloat

Как уже было сказано для всех исключений существуют стандартные обработчики подключаемые средой разработки. Как правило эти обработчики бывают разными в зависимости от способа запуска приложение:

· как самостоятельного приложения или

· в рамках интегрированной среды (по отладчиком).

В последнем случае все исключения перехватывает сам отладчик. И даже в том случае, если в приложение встроены средства перехвата исключений. Однако этот режим опционален.

Итак, при запуске в интегрированной среде возможны два варианта:

1. при возникновении исключения управление передается отладчику.

2. при возникновении исключения управление передается встроенным или стандартным средствам.

Для изменения режима реакции на исключения следует воспользоваться командой: Tools+Options и на вкладке Preferances изменить флажок ™ Break on exeption. (Вкл. –отладчик; выкл. – стандартный или собственный обработчик).

4.9.4.2. Пример:

Вспомним процедуру вычисления по формуле из примера ЛР 2

procedure TMainWindow.btCalcClick(Sender: TObject);

var a, b, h: real;

begin

//=== Преобразование входных данных ===

a:= StrToFloat(edA.Text); { Текст из поля edA преобразовать в Float }

b:= StrToFloat(edB.Text); { Текст из поля edB преобразовать в Float }

//=== Вычисление ===

if (((a>=0.1)and(a<=1.0)) and ((b>=0.05)and(b<=3.0))) then begin

if (a>=b) then begin

h:= 3.0*a*a - b*b;

end

else begin

h:= ln(3.0*a*a - b*b);

end;

{ В заголовок метки lbResult вывести результат }

lbResult.Caption:= FloatToStr(h);

end

else begin

{ В заголовок метки lbResult вывести сообщение об ошибке }

lbResult.Caption:= 'Неверные параметры';

end;

end;

Если во время работы программы попытаться ввести в соответствующие поля ввода ввести нечто не соответствующее правильному числу, то возникнет исключение EConvertError при выполнении функции StrToFloat и программа будет снята. Что бы избежать такой ситуации следует перехватить это исключение.

procedure TMainWindow.btCalcClick(Sender: TObject);

var

a, b, h: real;

begin


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: