Ignorer les itérations en Python

159

J'ai une boucle en cours, mais il y a la possibilité que des exceptions soient levées à l'intérieur de la boucle. Cela arrêterait bien sûr mon programme tous ensemble. Pour éviter que j'attrape les exceptions et les gère. Mais alors le reste de l'itération s'exécute même si une exception s'est produite. Y a-t-il un mot-clé à utiliser dans ma except:clause pour simplement ignorer le reste de l'itération actuelle?

Le.Anti.9
la source
4
Je ne vois pas comment la réponse acceptée (utilisation continue) intercepte les exceptions, mais elle a été acceptée. Par conséquent, la question est vraiment, vraiment déroutante.
S.Lott
@ S.Lott Je n'ai pas besoin du mot-clé pour attraper l'exception, je parlais juste du flux général du code total.
The.Anti.9
@ The.Anti.9. Quoi? Vous avez d'abord dit "Je veux attraper les exceptions". Vous dites maintenant "Je n'ai pas besoin du mot clé pour détecter l'exception". Pourriez-vous clarifier cela d'une manière ou d'une autre?
S.Lott
1
@ S.Lott. Je n'ai pas besoin d'attraper l'exception avec le mot-clé, il doit juste y avoir un essai, sauf une déclaration dans le code ....
The.Anti.9
1
J'ai reformulé la question pour qu'elle corresponde mieux à la réponse acceptée.
jilles de wit

Réponses:

381

Vous cherchez à continuer .

André
la source
31
Cela doit être l'une des réponses SO les plus succinctes que j'ai jamais vues!
Austin A
70
La vraie question: est-ce que sortir du «g» dans «lookin» Pythonic?
Mason Gardner
50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue
Alex McBride
la source
17

Quelque chose comme ça?

for i in xrange( someBigNumber ):
    try:
        doSomethingThatMightFail()
    except SomeException, e:
        continue
    doSomethingWhenNothingFailed()
S.Lott
la source
1
Modifié pour utiliser continuer plutôt que passer.
jilles de wit
16

Exemple pour Continue:

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')

Production:

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
Jesu Kiran Spurgen
la source
5

Pour ce cas d'utilisation spécifique, l'utilisation try..except..elseest la solution la plus propre, la elseclause sera exécutée si aucune exception n'a été déclenchée.

REMARQUE: la elseclause doit suivre toutes les exceptclauses

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
Istvan Jeno Veres
la source