Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.03;
Скачать: CL | DM;

Вниз

Обработка исключений   Найти похожие ветки 

 
cassy   (2003-02-19 09:18) [0]

Добрый день.
var t: integer;
При нажатии кнопки делаю
try
t:=round(1/0);
except
on EZeroDivide do raise exception.create("ДЕление на ноль");
end;
Почему не создается exception (сообщения нет)?
Спасибо


 
Reindeer Moss Eater   (2003-02-19 09:25) [1]

Потому, что числа целые


 
Reindeer Moss Eater   (2003-02-19 09:26) [2]

При делении на ноль могут возбуждаться 3(три) различных класса исключений


 
Демонов Е.В. ©   (2003-02-19 09:28) [3]

CTRL+SHIFT+F11 -> Compiler -> Code generation -> сними optimization.


Можно и без optimization но тогда ты должен использовать эту переменную t иначе компилятор её не замечает и не компилирует в код.
P.S. на D6 выдало ошибку в t:=round(1/0); а точнее в 1/0


 
Anatoly Podgoretsky ©   (2003-02-19 09:34) [4]

except генерируется на стадии выполнения операции, здесь выполнения не будет, все сделано на стадии компиляции. Как сказали проверни эту операцию с переменными.


 
Reindeer Moss Eater   (2003-02-19 09:38) [5]

Если переменные целочисленные, то EZeroDivide все равно не настанет


 
Демонов Е.В. ©   (2003-02-19 09:42) [6]

А вообще строка t:=round(1/0) проходит ?
У Меня на неё компилятор ругается.

А если делаю так const s:byte=0;
....
t:=round(1/s)
то всё нормально и исключение возбуждается.
А Если просто const s:=0
то компилятор опять ругается



 
Johnmen ©   (2003-02-19 09:52) [7]

>Reindeer Moss Eater (19.02.03 09:38)

Еще как настанет...:)))


 
REA ©   (2003-02-19 09:56) [8]

На некоторых станках с VIA чипсетом на W98 исключения сопра вызывают BSD.


 
Reindeer Moss Eater   (2003-02-19 10:01) [9]

Johnmen ©
Настанет EDivByZero.

EZeroDivide exception is raised when an application attempts to divide a floating-point value by zero.

Оба операнда нули - настанет EInvalidOp


 
REA ©   (2003-02-19 10:05) [10]

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


 
Johnmen ©   (2003-02-19 11:05) [11]

>Reindeer Moss Eater (19.02.03 10:01)

Утверждаю, что настанет ! (i:=round(i/j), где i,j : integer и j:=0 и i>0)
А то, что ты привел вырезку из хелпа, так все верно, ведь происходит неявное преобразование типов...



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

Текущий архив: 2003.03.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
4-5928
GROL
2003-01-15 14:35
2003.03.03
Компонент выходит за пределы формы


14-5852
Oleg_Gashev
2003-02-14 02:37
2003.03.03
Скриншот почтового ящика Буша


14-5710
alex_bredin
2003-02-12 10:41
2003.03.03
InstallShield Express for Delphi 6


14-5842
Manulo
2003-02-13 21:07
2003.03.03
Самы мы не месные.. :)


7-5898
Шонь-дзюнь
2002-11-21 12:41
2003.03.03
Блокировка монитора