Разработка приложений в системе Delphi. Шейкер Т.Д. - 59 стр.

UptoLike

Составители: 

деления, если делитель равен нулю или нулю равны оба введённых числа. Если
запустить программу на выполнение, то при возникновении любого из
исключений сработает глобальная система обработки исключительных
ситуаций. При этом выполнение процедуры будет прервано и будут выводиться
сообщения о причине ошибки.
Введём локальную обработку исключительных ситуаций. Для этого
сформируем защищённый блок. Анализировать ошибки не будем.
procedure TForm1.Button1Click(Sender: TObject);
Var a,b:integer;
r
begin
ez:extended;
try
a:=strtoint(Edit1.Text);
b:=strtoint(Edit2.Text);
rez:=a/b;
Edit3.Text:=floattostr(rez);
except
ShowMessage('Ошибка!');
end;
Memo1.Lines.Add(Edit1.Text);
Memo1.Lines.Add(Edit2.Text);
Memo1.Lines.Add(inttostr(a+b));
Memo1.Lines.Add(floattostr(rez));
end;
В этом случае при возникновении любого исключения будет прерываться
выполнение операторов защищённого блока, в
Edit3 результат не появится. На
экран будет выведено окно с сообщением «Ошибка!». Операторы,
расположенные после защищённого блока, будут выполняться, то есть в
Memo1
появятся записи.
Изменим секцию
except. Проверим одну из возможных ошибокделение
на ноль. Далее приводится фрагмент кода, в который внесены изменения.
except
on EZeroDivide do
begin
ShowMessage('Попытка деления на ноль!');
Edit2.SetFocus;
end;
В этом случае при возникновении других исключений сработает
глобальный обработчик, то есть выполнение процедуры будет прервано.
59
деления, если делитель равен нулю или нулю равны оба введённых числа. Если
запустить программу на выполнение, то при возникновении любого из
исключений      сработает   глобальная    система   обработки   исключительных
ситуаций. При этом выполнение процедуры будет прервано и будут выводиться
сообщения о причине ошибки.
    Введём локальную обработку исключительных ситуаций. Для этого
сформируем защищённый блок. Анализировать ошибки не будем.
procedure TForm1.Button1Click(Sender: TObject);
Var a,b:integer;
     rez:extended;
begin
 try
  a:=strtoint(Edit1.Text);
  b:=strtoint(Edit2.Text);
  rez:=a/b;
  Edit3.Text:=floattostr(rez);
 except
  ShowMessage('Ошибка!');
 end;
 Memo1.Lines.Add(Edit1.Text);
 Memo1.Lines.Add(Edit2.Text);
 Memo1.Lines.Add(inttostr(a+b));
 Memo1.Lines.Add(floattostr(rez));
end;

    В этом случае при возникновении любого исключения будет прерываться
выполнение операторов защищённого блока, в Edit3 результат не появится. На
экран   будет    выведено    окно   с    сообщением    «Ошибка!».   Операторы,
расположенные после защищённого блока, будут выполняться, то есть в Memo1
появятся записи.
    Изменим секцию except. Проверим одну из возможных ошибок – деление
на ноль. Далее приводится фрагмент кода, в который внесены изменения.
except
  on EZeroDivide do
    begin
     ShowMessage('Попытка деления на ноль!');
     Edit2.SetFocus;
    end;

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

                                         59