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

Вниз

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

Наверх





Память: 0.5 MB
Время: 0.012 c
10-1112809260
King of Lamers
2005-04-06 21:41
2006.02.05
Word. Установка курсора на заданную позицию в строке.


3-1133964171
Boxer
2005-12-07 17:02
2006.02.05
подключение с помощью Opendialog


6-1130155121
irishka001
2005-10-24 15:58
2006.02.05
Удалить письмо с почты


2-1137220462
VitalikS
2006-01-14 09:34
2006.02.05
TQuery+order by


4-1133010656
Kerk
2005-11-26 16:10
2006.02.05
Unicode-версия LB_FINDSTRING





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