Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

Не ловится исключительная ситуация:   Найти похожие ветки 

 
smaller   (2007-02-07 15:18) [0]

try
  Y:= 0;
  Z:= X/Y;
 except
  on EDivByZero do begin
                           if MessageDlg ("  Деление на ноль ",
                           mtError, [mbAbort],0) = mrAbort then EXIT;
                          end
 end;
Сообщения не появляется, программа вываливается в Debugger.
В чем тут м. быть дело?


 
Сергей М. ©   (2007-02-07 15:21) [1]


> Не ловится исключительная ситуация


Врешь, ловится.


 
DiamondShark ©   (2007-02-07 15:23) [2]


> Сообщения не появляется, программа вываливается в Debugger.

а если F9 нажать?


 
novill ©   (2007-02-07 15:30) [3]

> [0] smaller   (07.02.07 15:18)

1. запустить программу не из дельфи
2. подумать
3. Если не получился п.2 почитать справку


 
smaller   (2007-02-07 15:30) [4]

Здесь вроде трудно ошибиться - по моему, здесь нужно ожидать появления Message (на фоне моего приложения) а его нету  - при этом программа прерывается


 
sniknik ©   (2007-02-07 15:32) [5]

Z не используется? может быть выкинут оптимизатором, вместе с делением...


 
sniknik ©   (2007-02-07 15:39) [6]

+, выполни
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;


 
novill ©   (2007-02-07 15:48) [7]

> [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;


 
smaller   (2007-02-07 15:49) [8]

DiamondShark- у
F9 - а когда его нажимать - все время что-ли держать

novill- у
1. Если запустить программу не из Дельфи, тогда cистема делает замечание, что произошло деление на ноль, мое сообщение при этом не показывается
2. Подумав, можно сказать, что может быть надо как-то настроить Debugger или еще что-то в среде - чтобы прерывание сообщающее о делении на ноль обрабатывалось в программе, а не в среде или в системе
3. Справку читал - около часа, но ничего полезного не нашел

Z тут не при чем, проверил


 
smaller   (2007-02-07 16:07) [9]

Sniknik - у
Этот код я проверил - результат тот же самый - программа прерывается, Debugger  делает замечание.


 
Сергей М. ©   (2007-02-07 16:11) [10]


> Debugger  делает замечание.
>


Опция дебагера Stop On Delphi exceptions для пушкина писана ?


 
sniknik ©   (2007-02-07 16:27) [11]

> Этот код я проверил - результат тот же самый - программа прерывается, Debugger  делает замечание.
этот код не решение твоей проблемы (она как таковая не озвучена), а показать класс эксепта для сравнения с тем что ловишь ты, в том коде что показан ...

если твоя программа прерывается и не может продолжить (не доходит до сообщения) выполни его в новой программе, сделанной специально для данного кода...


 
RASkov   (2007-02-07 17:44) [12]

> [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 EZeroDivide do begin
  if MessageDlg ("Деление на ноль", mtError, [mbAbort],0) = mrAbort then EXIT;
 end;
end;
end;


Все нормально, после вылета в дебагер (если Stop On Delphi exceptions) жми F9 и твой обработчик сработает


 
RASkov   (2007-02-07 17:46) [13]

> Z:= X/0;

 Z:= X/Y;


 
smaller   (2007-02-07 20:33) [14]

Благодарю всех за помощь - проблему решил!
Моих две ошибки:
1.не настроил Debugger
2.использовал  EDivByZero вместо EZeroDivide
Спасибо ...


 
vrem   (2007-02-07 20:45) [15]

поймал, да? :)


 
RASkov   (2007-02-07 21:16) [16]

> [14] smaller   (07.02.07 20:33)

> 1.не настроил Debugger

А дебагер лучше не трогать, имхо, он кстати и подсказывает какой Exception вылетает...
Имеею ввиду Stop On Delphi exceptions.

> [15] vrem   (07.02.07 20:45)

Одному трудно ловить, а толпой в угол загнали :)


 
Германн ©   (2007-02-08 01:36) [17]


> Одному трудно ловить, а толпой в угол загнали :)

Вспомнил Ketmar"а. Точнее одну из его любимых книг. :(


 
RASkov   (2007-02-08 06:33) [18]

> Вспомнил Ketmar"а.

Кстати, без него как-то скучно..., а куда он делся?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
1-1167203119
TCrash
2006-12-27 10:05
2007.02.25
Zlib потоки (TDecompressionStream)


2-1170425512
NotGooDP
2007-02-02 17:11
2007.02.25
Отображеине данных в гриде


2-1170334791
Tornado
2007-02-01 15:59
2007.02.25
Не закрывается DataSet


2-1171013394
slaga
2007-02-09 12:29
2007.02.25
Как прочитать текстовый файл с конца ?


15-1170192850
Pasha L
2007-01-31 00:34
2007.02.25
Скрыть IP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский