general errors custom python exception

errors - python rescue exception



Python: ¿Cómo ignorar una excepción y proceder? (4)

Respuesta genérica

El estándar "nop" en Python es la declaración de pass :

try: do_something() except Exception: pass

Usando except Exception lugar de un SystemExit except evitar la captura de excepciones como SystemExit , KeyboardInterrupt etc.

Python 2

Debido a que la última excepción lanzada se recuerda en Python 2, algunos de los objetos involucrados en la declaración de lanzamiento de excepciones se mantienen en vivo indefinidamente (en realidad, hasta la próxima excepción). En caso de que esto sea importante para usted y (normalmente) no necesita recordar la última excepción lanzada, puede hacer lo siguiente en lugar de pass :

try: do_something() except Exception: sys.exc_clear()

Esto borra la última excepción lanzada.

Python 3

En Python 3, la variable que contiene la instancia de excepción se elimina al salir del bloque de except . Incluso si la variable mantuvo un valor anteriormente, después de ingresar y salir del bloque de except , se vuelve a definir de nuevo.

Esta pregunta ya tiene una respuesta aquí:

Tengo un intento ... excepto el bloqueo en mi código y cuando se lanza una excepción. Realmente solo quiero continuar con el código porque en ese caso, todo puede funcionar bien. El problema es que si deja el bloque excepto: vacío o con un #do nada, le da un error de sintaxis. No puedo usar continuar porque no está en un bucle. ¿Hay alguna palabra clave que pueda usar que diga el código para seguir adelante?


Hay una nueva forma de hacerlo 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, que habla sobre esto y todo otro tipo de picor de Python (bit relevante a las 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go

Si quisiera emular la palabra clave simple except y también ignorar cosas como KeyboardInterrupt aunque normalmente no lo hace, podría usar with suppress(BaseException) .

Edición: Parece que ignored fue renombrado para suppress antes de la versión 3.4.


Prueba esto:

try: blah() except: pass


except: pass