Главная страница
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.019 c
1-5615
Ozone
2003-02-20 09:51
2003.03.03
Создание компонентов в run-time


3-5467
Uran
2003-02-12 10:21
2003.03.03
Выборка по совпадению первых 10ти символов


1-5589
Mika
2003-02-19 19:55
2003.03.03
Обработка события


1-5530
Kurt_
2003-02-21 11:43
2003.03.03
Как корректно проверить освободилась ли форма методом Free?


14-5805
Анонимный невротик
2003-02-11 03:05
2003.03.03
Музыка