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

159

У меня есть цикл, но есть вероятность возникновения исключений внутри цикла. Это конечно остановило бы мою программу все вместе. Чтобы предотвратить это, я ловлю исключения и обрабатываю их. Но затем остальная часть итерации запускается, хотя и произошло исключение. Есть ли ключевое слово для использования в моем except:предложении, чтобы просто пропустить оставшуюся часть текущей итерации?

The.Anti.9
источник
4
Не вижу, как принятый ответ (использование continue) ловит исключения, но он был принят. Поэтому вопрос действительно очень запутанный.
Лотт
@ S.Lott Мне не нужно ключевое слово, чтобы поймать исключение, я просто говорил об общем потоке всего кода.
The.Anti.9
@ The.Anti.9. Какой? Сначала вы сказали: «Я хочу поймать исключения». Теперь вы говорите: «Мне не нужно ключевое слово, чтобы поймать исключение». Не могли бы вы уточнить это каким-то образом?
S.Lott
1
@ С. Лотт. Мне не нужно отлавливать исключение с помощью ключевого слова, просто нужно сделать попытку, кроме оператора в коде ....
The.Anti.9
1
Я перефразировал вопрос, чтобы он лучше соответствовал принятому ответу.
Жил де Вит

Ответы:

381

Вы ищете продолжить .

Андре
источник
31
Это, должно быть, один из самых кратких SO ответов, которые я когда-либо видел!
Остин А
70
Реальный вопрос: оставлен ли «g» в «lookin» Pythonic?
Мейсон Гарднер
50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue
Алекс Макбрайд
источник
17

Что-то вроде этого?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()
С. Лотт
источник
1
Отредактировано для использования продолжения, а не прохода.
Жил де Вит
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
Иштван Йено Верес
источник