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

Вниз

Исключ. ситуац.   Найти похожие ветки 

 
Kaldr   (2002-05-31 11:46) [0]

Помогите разобраться с исключ. ситуациями здесь может возникать деление на ноль или еще что-то вот такая штука не работает:
Case d of
.............

4: try
begin if StrToFloat(Label1.Caption)<>0 then
label1.Caption:=FloatToStr(StrToFloat(f)/StrToFloat(Label1.Caption))
expect EMathError
do ShowMessage("Div Zero");
end;

и что же тут не так??


 
Cossys   (2002-05-31 12:00) [1]

1. do ShowMessage("Div Zero"); - do уберите

2. Честно говоря, никогда except на EMathError, EIOError не проверяю, просто пишите -

expect
ShowMessage("Div Zero");
end;

Ведь тут другая ошибка и не проглядывается


 
Freezer   (2002-05-31 12:58) [2]

try
{ ... }
except
on E: EMathError do
ShowMessage("Division by zero!")
else
raise
end;


 
Song   (2002-05-31 13:01) [3]

Do надо писать если написано on
А при делении на ноль возникает AV вида не EMathError...


 
Anatoly Podgoretsky   (2002-05-31 13:04) [4]

Никогда ошибка деления на ноль не наступит

if StrToFloat(Label1.Caption )<>0 then
label1.Caption:=FloatToStr(StrToFloat(f)/StrToFloat(Label1.Caption))


 
Игорь Шевченко   (2002-05-31 13:07) [5]

Song © (31.05.02 13:01)

EIntError = class(EExternal);
EDivByZero = class(EIntError);
EZeroDivide = class(EMathError);

:-))


 
Freezer   (2002-05-31 13:10) [6]

Согласен с Song, конечно же ошибка другого класса, но смысл вопроса был не в этом... В приведенном коде Kaldr куча синтаксических ошибок! expect -> except, например...

try
{ ... }
except
on E: Exception do
Application.HandleException(E);
end;



 
Anatoly Podgoretsky   (2002-05-31 13:27) [7]

А ты не думаешь, что ее не наступит по причине отсутствия самого деления, вообще то этот код одна сплошная ошибка


 
Anatoly Podgoretsky   (2002-05-31 13:40) [8]

Kaldr © (31.05.02 11:46)
Вообще если хочешь, что бы это заработало и лучше для всех арифметических ошибок, то можно написать так

4:
try
label1.Caption:=FloatToStr(StrToFloat(f)/StrToFloat(Label1.Caption))
execpt
ShowMessage("Math error");
end;


 
Reindeer Moss Eater   (2002-05-31 14:25) [9]

Кроме перечисленных выше классов может быть еще и
EInvalidOp при делении на ноль


 
Игорь Шевченко   (2002-05-31 14:28) [10]

Дабы прекратить дебаты о типах Exceptions

function ForceFixedZeroDivide (K, M : Integer) : INteger;
begin
K := (M DIV 2) - K;
Result := M DIV K;
end;

function ForceFloatZeroDivide (K, M : Extended) : Extended;
begin
K := (M / 2) - K;
Result := M / K;
end;

procedure TForm1.Button1Click(Sender: TObject);
var K : Integer;
M : Integer;
begin
K := 5;
M := K * 2;
ForceFixedZeroDivide (K, M);
end;

procedure TForm1.Button2Click(Sender: TObject);
var K : Extended;
M : Extended;
begin
K := 5;
M := K * 2;
ForceFloatZeroDivide (K, M);
end;

Попробуйте. D5/WinNt


 
Reindeer Moss Eater   (2002-05-31 14:43) [11]

EInvalidOp в этом примере не получится.


 
Игорь Шевченко   (2002-05-31 14:54) [12]

Reindeer Moss Eater (31.05.02 14:43)

А в каком получится ? :-)


 
Reindeer Moss Eater   (2002-05-31 15:12) [13]

А получится если разделить целый ноль на целый ноль



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

Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
4-31045
Mr.Ice
2002-04-09 07:45
2002.06.10
раскладка клавы


1-30740
Miron12
2002-05-28 18:37
2002.06.10
ошибка Index is out of bounds


3-30677
Chainik
2002-05-17 13:23
2002.06.10
Выборка первых 2-х цифр из поля таблицы


8-30916
X-Boris
2002-01-21 20:33
2002.06.10
Амплитуда звука и VediaPlayer


3-30703
KOA
2002-05-18 12:33
2002.06.10
Убрать удаление записей в базе





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