Главная страница
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.025 c
14-5726
Anatoly Podgoretsky
2003-02-15 11:03
2003.03.03
Именинники 15 февраля


14-5824
Scorpx
2003-02-13 15:32
2003.03.03
Программы


14-5722
Дмитрий К.К.
2003-02-12 06:24
2003.03.03
Именинники 12 февраля


1-5636
Ozone
2003-02-20 13:35
2003.03.03
Компоненты RUN-TIME


7-5896
s.ts
2002-07-04 20:47
2003.03.03
Изменение/добавление/удаление ресурсов из PE.