Python: ¿Cómo ignorar una excepción y continuar? [duplicar]
Lo intento... excepto bloquear en mi código y cuando se lanza una excepción. Realmente solo quiero continuar con el código porque en ese caso, todo aún puede funcionar bien. El problema es que si dejas el bloque excepto: vacío o con un #no hacer nada, te da un error de sintaxis. No puedo usar continuar porque no está en un bucle. ¿Existe alguna palabra clave que pueda usar que le indique al código que continúe?
except Exception:
pass
Documentos de Python para la declaración de paso
respuesta genérica
El "nop" estándar en Python es la pass
declaración:
try:
do_something()
except Exception:
pass
Usar except Exception
en lugar de simplemente except
evitar detectar excepciones como SystemExit
, KeyboardInterrupt
etc.
Pitón 2
Debido a que Python 2 recuerda la última excepción lanzada, algunos de los objetos involucrados en la declaración de lanzamiento de excepción se mantienen activos indefinidamente (en realidad, hasta la próxima excepción). En caso de que esto sea importante para usted y (normalmente) no necesite recordar la última excepción lanzada, es posible que desee hacer lo siguiente en lugar de pass
:
try:
do_something()
except Exception:
sys.exc_clear()
Esto borra la última excepción lanzada.
Pitón 3
En Python 3, la variable que contiene la instancia de excepción se elimina al salir del except
bloque. Incluso si la variable tenía un valor anteriormente, después de entrar y salir del except
bloque vuelve a quedar indefinida .
Hay una nueva forma de hacer esto en Python 3.4:
from contextlib import suppress
with suppress(Exception):
# your code
Aquí está el compromiso que lo agregó: http://hg.python.org/cpython/rev/406b47c64480
Y aquí está el autor, Raymond Hettinger, hablando sobre esto y todo tipo de otros atractivos de Python (parte relevante en el minuto 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go
Si desea emular la except
palabra clave básica y también ignorar cosas como KeyboardInterrupt
(aunque normalmente no lo hace), puede usar with suppress(BaseException)
.
Editar: Parece que ignored
se le cambió el nombre a suppress
antes de la versión 3.4.