Пропуск ітерацій в Python


159

У мене відбувається цикл, але існує можливість для виключень, які будуть підняті всередині циклу. Це, звичайно, зупинило б мою програму разом. Щоб запобігти тому, щоб я спіймав винятки і попрацював з ними. Але тоді решта ітерації запускається, хоча стався виняток. Чи є в моєму except:пункті ключове слово, щоб просто пропустити решту поточної ітерації?


4
Не бачите, як прийнята відповідь (використання continue) ловить винятки, але це було прийнято. Тому питання справді, дуже заплутане.
S.Lott

@ S.Lott Мені не потрібно ключове слово, щоб знайти виняток, я просто говорив про загальний потік загального коду.
The.Anti.9

@ The.Anti.9. Що? Спочатку ви сказали "Я хочу зловити винятки". Тепер ви говорите: "Мені не потрібне ключове слово, щоб знайти виняток". Чи можете ви якимось чином це прояснити?
С.Лотт

1
@ S.Lott. Мені не потрібно вловлювати виняток із ключовим словом, там просто потрібно спробувати, за винятком заяви у коді ....
The.Anti.9

1
Я переформулював питання, щоб воно краще відповідало прийнятій відповіді.
jilles de wit

Відповіді:




17

Щось на зразок цього?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()

1
Відредаговано для використання продовжувати, а не пропускати.
jilles de wit

16

Приклад для продовження:

number = 0

for number in range(10):
   number = number + 1

   if number == 5:
      continue    # continue here

   print('Number is ' + str(number))

print('Out of loop')

Вихід:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 6 # Note: 5 is skipped!!
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop


5

Для цього конкретного випадку використання try..except..elseє найчистішим рішенням, elseпункт буде виконано, якщо не було винято жодного винятку.

ПРИМІТКА. Цей elseпункт повинен відповідати всім exceptпунктам

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.