Текущий архив: 2006.02.05;
Скачать: CL | DM;
Вниз
try ... except в цикле Найти похожие ветки
← →
qwersdgvnb (2006-01-19 13:38) [0]Здравствуйте люди добрые.
Объясните такой момент пожалуйста.
если в цикле у меня возникает исключительная операция (ну например /0), которая сидит в блоке try... except, приложение продолжает работать, но выполнение самого цикла прекращается. Как сделать, что бы при возникновении исключения цикл продолжал выполняться?
т.е. например
for i:=-5 to 5 do
try
a:=10/i;
except
showmessage("aшипка");
end;
надо чтобы на i=0 показалось сообщение об ошибке, а цикл продолжал выполняться с i=1;2;3...
← →
AndreyAR (2006-01-19 13:51) [1]Ну так что, уважаемые, никак нельзя или никто не знает?
← →
Ega23 © (2006-01-19 13:55) [2]Вообще-то цикл должен дальше продолжить работу.
← →
Leonid Troyanovsky © (2006-01-19 14:51) [3]
> qwersdgvnb (19.01.06 13:38)
> Объясните такой момент пожалуйста.
Видимо, переменная "a" нигде не используется.
--
Regards, LVT.
← →
Digitman © (2006-01-19 15:12) [4]
> Ну так что, уважаемые, никак нельзя или никто не знает?
Для начала, уважаемый, изволь в своей ветке фигурировать под одним и тем же "погонялом".
Для "конца", уважаемый, следует вникнуть в [3] и задуматься над
for i := ... to ... do
try
a:=10/i;
except
if i<>0 then
begin
showmessage("aшипка");
break;
end;
end;
← →
DimonS © (2006-01-19 15:16) [5]Цикл ДОЛЖЕН работать дальше! Если код именно такой.
← →
AndreyAR (2006-01-19 15:23) [6]
> Цикл ДОЛЖЕН работать дальше! Если код именно такой.
Ну не совсем конечно, это же придельно упрощенный пример.
В цикле запрос insert к базе, в частности, к MS SQL.
Исключение возникает при попытке вставить запись с уже существующим значением уникального индекса (текст сообщения сервера точно не могу привести). И вот при этом вываливаеься-таки из цикла.
← →
Ega23 © (2006-01-19 15:26) [7]
> И вот при этом вываливаеься-таки из цикла.
если ты raise не делаешь, то НЕ ДОЛЖНО вываливаться.
М.б. ты конкретный exception указал?
← →
Ega23 © (2006-01-19 15:27) [8]
> Исключение возникает при попытке вставить запись с уже существующим
> значением уникального индекса
Сначала надо проверять, вообще-то...
← →
Digitman © (2006-01-19 15:28) [9]
> при этом вываливаеься-таки из цикла
.. и отладчик при этом тебе ни о чем не говорит.
Так ?
← →
AndreyAR (2006-01-19 15:34) [10]Удалено модератором
← →
AndreyAR (2006-01-19 15:37) [11]
> Сначала надо проверять, вообще-то...
Разумеется, но происходит вставка в цикле примерно 1.000.000 записей, и выполняется весь код часа четыре. Если еще перед каждым инсертом проверку делать, то...
← →
AndreyAR (2006-01-19 15:41) [12]
> если ты raise не делаешь, то НЕ ДОЛЖНО вываливаться.
> М.б. ты конкретный exception указал?
Нет, у меня вообще просто
except
end;
Сейчас еще раз попробую проверить, может, сам торможу...
← →
Digitman © (2006-01-19 16:02) [13]Удалено модератором
← →
AndreyAR (2006-01-19 16:20) [14]Удалено модератором
← →
Johnmen © (2006-01-19 16:24) [15]>В помощи я не нуждаюсь.
О как!
>Если человек держит меня за полного лоха, тогда незачем вообще мне что-то отвечать.
Видимо, он и не держал, раз ответил. И это было его ошибкой...:)
← →
Digitman © (2006-01-19 16:25) [16]
> AndreyAR (19.01.06 16:20) [14]
А вот в этом случае, думаю, ты заработал в форуме почетное звание - LMD.
← →
Leonid Troyanovsky © (2006-01-19 16:36) [17]
> AndreyAR (19.01.06 16:20) [14]
> Если человек держит меня за полного лоха, тогда незачем
> вообще мне что-то отвечать.
Да я, в общем-то, изначально и не держал.
Но, связи между EZeroDivide vs EADOError(?) предположить,
конечно, не мог. Как, собс-но, и последующую эскалацию
немотивированной агрессивности.
Т.е., прав уважаемый Digitman, я ошибался.
--
Regards, LVT.
← →
AndreyAR (2006-01-19 16:37) [18]Удалено модератором
← →
Leonid Troyanovsky © (2006-01-19 16:38) [19]
> Leonid Troyanovsky © (19.01.06 16:36) [17]
> Т.е., прав уважаемый Digitman, я ошибался.
Да, и уважаемый Johnmen также был прав.
--
Regards, LVT.
← →
Ega23 © (2006-01-19 16:44) [20]Удалено модератором
← →
Игорь Шевченко © (2006-01-19 16:44) [21]Автору - читать
http://www.ln.ua/~openxs/articles/smart-questions-ru.html
думать над прочитанным
Страницы: 1 вся ветка
Текущий архив: 2006.02.05;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.011 c