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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.049 c
1-5499
Sharik_212
2003-02-20 15:55
2003.03.03
Показ формы


14-5740
dobriy
2003-02-15 09:18
2003.03.03
проблема с функциями


14-5818
FROM_X
2003-02-13 13:44
2003.03.03
DirectSS Кто с ним работал?


1-5627
VIB
2003-02-20 10:44
2003.03.03
Printer


1-5599
Adolf
2003-02-19 21:40
2003.03.03
RichEdit1





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский