![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не ловится исключительная ситуация: [D7, XP]
smaller © (2007-02-07 15:18:00)try
Y:= 0;
Z:= X/Y;
except
on EDivByZero do begin
if MessageDlg (' Деление на ноль ',
mtError, [mbAbort],0) = mrAbort then EXIT;
end
end;
Сообщения не появляется, программа вываливается в Debugger.
В чем тут м. быть дело?
RASkov (2007-02-08 06:33:00) [1]> Вспомнил Ketmar'а.
Кстати, без него как-то скучно..., а куда он делся?
Германн (2007-02-08 01:36:00) [2]
> Одному трудно ловить, а толпой в угол загнали :)
Вспомнил Ketmar'а. Точнее одну из его любимых книг. :(
RASkov (2007-02-07 21:16:00) [3]> [14] smaller (07.02.07 20:33)
> 1.не настроил Debugger
А дебагер лучше не трогать, имхо, он кстати и подсказывает какой Exception вылетает...
Имеею ввиду Stop On Delphi exceptions.
> [15] vrem (07.02.07 20:45)
Одному трудно ловить, а толпой в угол загнали :)
vrem (2007-02-07 20:45:00) [4]поймал, да? :)
smaller (2007-02-07 20:33:00) [5]Благодарю всех за помощь - проблему решил!
Моих две ошибки:
1.не настроил Debugger
2.использовал EDivByZero вместо EZeroDivide
Спасибо ...
RASkov (2007-02-07 17:46:00) [6]> Z:= X/0;
Z:= X/Y;
RASkov (2007-02-07 17:44:00) [7]> [9] smaller (07.02.07 16:07)
Не тот Exception обрабатываешь
procedure TForm1.Button1Click(Sender: TObject);
var X,Y,Z: Extended; N: Integer;
begin
try
Y:= 0;
X:=1;
Z:= X/0;
N:=Round(Z);
except
on EZeroDividedo begin
if MessageDlg ('Деление на ноль', mtError, [mbAbort],0) = mrAbort then EXIT;
end;
end;
end;
Все нормально, после вылета в дебагер (если Stop On Delphi exceptions) жми F9 и твой обработчик сработает
sniknik (2007-02-07 16:27:00) [8]> Этот код я проверил - результат тот же самый - программа прерывается, Debugger делает замечание.
этот код не решение твоей проблемы (она как таковая не озвучена), а показать класс эксепта для сравнения с тем что ловишь ты, в том коде что показан ...
если твоя программа прерывается и не может продолжить (не доходит до сообщения) выполни его в новой программе, сделанной специально для данного кода...
Сергей М. (2007-02-07 16:11:00) [9]
> Debugger делает замечание.
>
Опция дебагера Stop On Delphi exceptions для пушкина писана ?
smaller (2007-02-07 16:07:00) [10]Sniknik - у
Этот код я проверил - результат тот же самый - программа прерывается, Debugger делает замечание.
smaller (2007-02-07 15:49:00) [11]DiamondShark- у
F9 - а когда его нажимать - все время что-ли держать
novill- у
1. Если запустить программу не из Дельфи, тогда cистема делает замечание, что произошло деление на ноль, мое сообщение при этом не показывается
2. Подумав, можно сказать, что может быть надо как-то настроить Debugger или еще что-то в среде - чтобы прерывание сообщающее о делении на ноль обрабатывалось в программе, а не в среде или в системе
3. Справку читал - около часа, но ничего полезного не нашел
Z тут не при чем, проверил
novill (2007-02-07 15:48:00) [12]> [4] smaller (07.02.07 15:30)
Попробуй ;)
var x,y,z:double;
begin
try
x:=1;
Y:= 0;
Z:= X/Y;
ShowMessage(FloatToStr(Z));
except
on EDivByZero do begin
if MessageDlg (' Aaeaiea ia iieu ',
mtError, [mbAbort],0) = mrAbort then EXIT;
end;
on e:exception do ShowMessage('Error classname '+e.ClassName+' with message '+e.Message);
end;
end;
sniknik (2007-02-07 15:39:00) [13]+, выполни
procedure TForm1.Button1Click(Sender: TObject);
var X, Y, Z: double;
begin
try
Y:= 0;
Z:= X/Y;
ShowMessage(FloatToStr(Z));
except
on E: Exception do ShowMessage(E.ClassName);
end;
end;
sniknik (2007-02-07 15:32:00) [14]Z не используется? может быть выкинут оптимизатором, вместе с делением...
smaller (2007-02-07 15:30:00) [15]Здесь вроде трудно ошибиться - по моему, здесь нужно ожидать появления Message (на фоне моего приложения) а его нету - при этом программа прерывается
novill (2007-02-07 15:30:00) [16]> [0] smaller (07.02.07 15:18)
1. запустить программу не из дельфи
2. подумать
3. Если не получился п.2 почитать справку
DiamondShark (2007-02-07 15:23:00) [17]
> Сообщения не появляется, программа вываливается в Debugger.
а если F9 нажать?
Сергей М. (2007-02-07 15:21:00) [18]
> Не ловится исключительная ситуация
Врешь, ловится.