Простой пример из лабораторной работы № 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
|
ф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