Saltar iteraciones en Python


159

Tengo un ciclo en marcha, pero existe la posibilidad de que se generen excepciones dentro del ciclo. Por supuesto, esto detendría mi programa todos juntos. Para evitarlo, atrapo las excepciones y las manejo. Pero luego el resto de la iteración se ejecuta a pesar de que ocurrió una excepción. ¿Hay una palabra clave para usar en mi except:cláusula para omitir el resto de la iteración actual?


44
No veo cómo la respuesta aceptada (uso continue) captura excepciones, pero fue aceptada. Por lo tanto, la pregunta es realmente muy confusa.
S.Lott

@ S.Lott No necesito que la palabra clave atrape la excepción, solo estaba hablando del flujo general del código total.
The.Anti.9

@ The.Anti.9. ¿Qué? Primero dijiste "Quiero atrapar las excepciones". Ahora estás diciendo "No necesito la palabra clave para detectar la excepción". ¿Podría aclarar esto de alguna manera?
S.Lott

1
@ S.Lott. No necesito atrapar la excepción con la palabra clave, solo tiene que intentarlo, excepto la declaración en el código ...
The.Anti.9

1
Reescribí la pregunta para que coincida mejor con la respuesta aceptada.
jilles de wit

Respuestas:



50
for i in iterator:
    try:
        # Do something.
        pass
    except:
        # Continue to next iteration.
        continue

17

¿Algo como esto?

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

1
Editado para usar continuar en lugar de pasar.
jilles de wit

16

Ejemplo para continuar:

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

Salida:

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

Para este caso de uso específico, el uso try..except..elsees la solución más limpia, la elsecláusula se ejecutará si no se produce una excepción.

NOTA: La elsecláusula debe seguir todas las exceptcláusulas.

for i in iterator:
    try:
        # Do something.
    except:
        # Handle exception
    else:
        # Continue doing something
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.