Форум: "Прочее";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизКак же работает try...except ? Найти похожие ветки
← →
Kostafey © (2007-04-08 22:18) [0]Что-то я не понял:
try
SomeDataSet.Post;
except
ShowMessage("Эррор и все такое");
end
Получаем сообщение "Эррор и все такое".
Дальше:
try
SomeDataSet.Post;
ShowMessage("Увсе сработало");
except
ShowMessage("Эррор и все такое");
end
Условия все те же самые, но сообщение получаем только: "Увсе сработало".
Ведь в except можно попасть только при исключительной ситуации? Или нет?
P.S. 17-ю строчку проверял. Там все Ок!
← →
homm © (2007-04-08 22:21) [1]> [0] Kostafey © (08.04.07 22:18)
А что тут непонятного? Припервом тесте произошла ошибка, при втором нет.
← →
Alx2 © (2007-04-08 22:32) [2]Вроде все как надо. :)
procedure TForm1.Button1Click(Sender: TObject);
Var a ,b: integer;
begin
b := 0;
try
a := a div b;
ShowMessage("ok!");
showmessage(inttostr(a));
except
ShowMessage("error!");
end;
end;
← →
Kostafey © (2007-04-08 22:56) [3]> А что тут непонятного? Припервом тесте произошла ошибка,
> при втором нет.
Я бы тоже так подумал если бы не сам тест делал :)
Условия теста абсолютно одинаковы. И ошибки быть не могло.
Вот и стал я сомневаться может 2*2 не 4, а блок except начианет
выполняться после успешнного выполнения всех операторов в блоке try?
Вот и уверуешь тут в переселение душ (С)
← →
palva © (2007-04-08 23:11) [4]Можно ведь напечатать сообщение Message и посмотреть, какая ошибка происходит и какой у нее тип.
← →
Зяма (2007-04-08 23:15) [5]может 2*2 не 4, а блок except начианет
выполняться после успешнного выполнения всех операторов в блоке try?
Нет.
****************************
var
y: double;
try
y := y / 0;
except
ShowMessage("Эррор и все такое");
end;
try
y := y / 0;
ShowMessage("Увсе сработало");
except
ShowMessage("Эррор и все такое");
end;
← →
Loginov Dmitry © (2007-04-08 23:41) [6]Нет ничего невозможного. Бывают и такие ситуации, когда всего одна лишняя строка кода может блокировать генерацию исключения (да ну хоть просто лишний перевод строки). А вот если используешь всякие недоделанные TChart"ы или глюченные TDataSet"ы, то вероятность, что подобное может произойти больше нуля. И исключение когда нибудь все-равно будет сгенерировано, причем при выполнении самого безобидного кода, например IntValue := IntValue1 + IntValue2, и отлаживать подобные ошибки можно сутками, хотя возникают они гораздо раньше, где-нибудь в клоаках генофонда.
Поэтому лично я не исключаю, что в первом случае при выполнении "условного" Post ошибка была сгенерирована, а во втором случае по причине кривости генофонда (а может и BDE, если таковая используется) - нет.
← →
Kostafey © (2007-04-08 23:52) [7]> [6] Loginov Dmitry © (08.04.07 23:41)
Весьма познавательно.
Вообще, я испльзовал ADO.
К счастью, ошибка больше не повторялась, правда
объяснить ее первое появление я так и не смог.
← →
sniknik © (2007-04-09 00:06) [8]> К счастью, ошибка больше не повторялась, правда
правильно! ну ее. чего разбираться, пусть у пользователей программы голова болит когда умудрятся воспроизвести условия при которой она возникает...
> объяснить ее первое появление я так и не смог.
и как ты ее вообще хотел обьяснить? ведь ты спрятал настоящую ошибку, в которой были подробности. заменил ее на свою маловразумительную фигню...
даже если ситуация когданибудь повторится, вместе с ошибкой... никакой новой информации о ней не будет.
← →
MikePetrichenko © (2007-04-09 03:08) [9]Отключи оптимизатор и посмотри. А то порой такого наоптимизирует.
У меня вот давеча прикол был. Короче были методы класса. Решил оформить их как локальные процедуры для другой процедуры (потому-как они только оттуда вызываются).
В общем эти процедуры должны были использваоть объек созданный в вызывающей процедуре. И что бы вы думали. Оптимизатор на двухядрах или на гипертредных процах начинал выполнять локальные процедуры ДО создания объекта. Отключил оптимизатор - все заработало.
← →
Германн © (2007-04-09 03:13) [10]
> MikePetrichenko © (09.04.07 03:08) [9]
>
> Отключи оптимизатор и посмотри. А то порой такого наоптимизирует.
>
Как не оптимизируй [0], никак не получишь ситуацию автора сабжа. Имхо.
← →
MikePetrichenko © (2007-04-09 03:19) [11]Смотря что у него повешено на OnPost....
← →
Германн © (2007-04-09 03:47) [12]
> MikePetrichenko © (09.04.07 03:19) [11]
>
> Смотря что у него повешено на OnPost....
>
А что бы и не было повешено! Если автор не врёт, что у него всё одинаково.
И без учёта sniknik © (09.04.07 00:06) [8] никогда и ничего не получится.
P.S. Вру. Может что-то получиться. Геморрой!
P.P.S. Не глядя, могу "навскидку" предложить два объяснения глюка. Но оба они не были бы глюками, а были бы обычными ошибками, если бы неShowMessage("Эррор и все такое");
← →
Kostafey © (2007-04-09 03:56) [13]> [8] sniknik © (09.04.07 00:06)
Ладно, ладно вы мне вернули интерес к проблеме. Разберусь - отпишу.
Только уже завтра...то есть утром...то есть после обеда...:)
← →
Германн © (2007-04-09 04:08) [14]
> Kostafey © (09.04.07 03:56) [13]
>
> > [8] sniknik © (09.04.07 00:06)
>
> Ладно, ладно вы мне вернули интерес к проблеме. Разберусь
> - отпишу.
> Только уже завтра...то есть утром...то есть после обеда.
> ..:)
>
Да хоть "в пятницу, после дождичка в четверг"!
Твоя ж проблема, тебе и будут навешивать, но не нам :)
← →
homm © (2007-04-09 06:21) [15]> Вот и стал я сомневаться может 2*2 не 4, а блок except начианет
> выполняться после успешнного выполнения всех операторов
> в блоке try?
Нет.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.086 c