![]() |
|
|
|
|
#1
|
|||
|
|||
|
помогите, плииз... добавил блок try...except, а при проверке программы все равно выдает исключение. почему?
Код:
function LinearEquation(a: real; b: real): real;
begin
try
Result := -(b / a);
except
on EZeroDivide do
begin
MessageBeep(MB_ICONERROR);
MessageDlg('Коэффициент а не должен равняться нулю!', mtError, [mbOK], 0);
Exit;
end;
on EConvertError do
begin
MessageBeep(MB_ICONERROR);
MessageDlg('Введите коэффициенты!', mtError, [mbOK], 0);
Exit;
end;
end;
end; |
|
#2
|
||||
|
||||
|
Если проверяете в отладчике, то так и должно быть если только в настройках не отключите опцию, но с этим отключением надо осторожнее быть.
|
|
#3
|
|||
|
|||
|
большое спасибо! запустил приложение не из Delphi и все нормально
|
|
#4
|
|||
|
|||
|
Возможно, вы предусмотрели не все исключительные ситуации? Мне удалось получить только сообщение Invalid floating point operation, когда a=b=0. При желании можете на все "неизвестные" исключения поставить одно сообщение: "Произошла неизвестная ошибка!" X)
Код:
function LinearEquation(a: real; b: real): real;
begin
try
Result := -(b / a);
except
on EZeroDivide do
begin
MessageBeep(MB_ICONERROR);
MessageDlg('Коэффициент а не должен равняться нулю!', mtError, [mbOK], 0);
Exit;
end;
on EConvertError do
begin
MessageBeep(MB_ICONERROR);
MessageDlg('Введите коэффициенты!', mtError, [mbOK], 0);
Exit;
end;
else
MessageDlg('Unknown error!', mtError, [mbOK], 0);
end;
end; |
|
#5
|
|||
|
|||
|
спасибо, недочет исправлен
|