2009-02-14 22 views
69

Tengo un ciclo en funcionamiento, pero existe la posibilidad de que se generen excepciones dentro del ciclo. Esto, por supuesto, detendría mi programa todos juntos. Para evitar que atrape las excepciones y las maneje. Pero luego el resto de la iteración se ejecuta aunque haya ocurrido una excepción. ¿Hay una palabra clave para usar en mi cláusula except: para omitir el resto de la iteración actual?Saltar Iteraciones en Python

+2

No vemos cómo la respuesta aceptada (uso 'continue') atrapa excepciones, pero fue aceptado. Por lo tanto, la pregunta es realmente confusa. –

+0

@ S.Lott No necesito la palabra clave para captar la excepción, solo estaba hablando del flujo general del código total. –

+0

@ The.Anti.9. ¿Qué? Primero dijiste "Quiero atrapar las excepciones". Ahora dices "No necesito la palabra clave para captar la excepción". ¿Podrías aclarar esto de alguna manera? –

Respuesta

188

Usted está buscando continue.

+11

¡Esta debe ser una de las respuestas SO más sucintas que he visto en mi vida! –

+21

La verdadera pregunta: ¿está dejando la 'g' en 'lookin' Pythonic? –

13

¿Algo como esto?

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

Editado para usar continuar en lugar de pasar. –

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

Para este caso de uso específico mediante try..except..else es la solución más limpia, la cláusula else se ejecutará si no se planteó ninguna excepción.

NOTA: La cláusula else debe seguir todas las cláusulas except

for i in iterator: 
    try: 
     # Do something. 
    except: 
     # Handle exception 
    else: 
     # Continue doing something 
Cuestiones relacionadas