Задать вопрос

Почему не происходит обработка исключений?

Простейший код. Сообщение - Возникло исключение не появляется. Любой код в секции except не выполняется.
Если вынести код c:=a div b; за пределы try-except программа сообщит Division by zero.
Почему не происходит обработка исключений?
procedure TForm1.Button2Click(Sender: TObject);
var
a,b,c:integer;
begin
a:=1;
b:=0;
try
c:=a div b;
except
ShowMessage('Возникло исключение.'); //Это сообщение не появляется
end;
end;
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Оценить 5 комментариев
Решения вопроса 1
Rou1997
@Rou1997
У меня (Delphi 7) ваш код видимо уничтожается оптимизатором ведь в нем не используется значение переменной c, дизассемблировать лень но похоже так, ведь если сделать чтобы оно использовалось, то работает:
procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c: integer;
begin
a := 5;
b := 0;
try
  c := a div b;
  ShowMessage(FloatToStr(c)); // --
except
  ShowMessage('test');
end;
end;

Разумеется запускать нужно вне отладчика Delphi, иначе он сам сперва покажет свое стандартное сообщение с ошибкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
except
on EZeroDivide do ShowMessage('Возникло исключение.');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы