Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.028 c
2-1137359399
Tort
2006-01-16 00:09
2006.02.05
Копировать файлы


15-1137325080
Mike Kouzmine
2006-01-15 14:38
2006.02.05
Как избавиться от тормозов (Windows)


2-1137476418
Dot
2006-01-17 08:40
2006.02.05
выборка из таблицы в StringGrid


15-1137508509
JLes
2006-01-17 17:35
2006.02.05
Delphi 2005 и Help (HxS/HxI-файлы)


4-1132453837
Relaxxx
2005-11-20 05:30
2006.02.05
Корректоное отображение 32-битных иконок(с alpha-каналом) на кно