Текущий архив: 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.46 MB
Время: 0.008 c