try pass example custom catch python exception-handling

pass - try catch python example



Sobre la captura de CUALQUIER excepción (7)

¿Cómo puedo escribir un bloque try / except que atrapa todas las excepciones?


Acabo de descubrir este pequeño truco para probar nombres de excepción en Python 2.7. A veces he manejado excepciones específicas en el código, así que necesitaba una prueba para ver si ese nombre está dentro de una lista de excepciones manejadas.

try: raise IndexError #as test error except Exception as e: excepName = type(e).__name__ # returns the name of the exception


Aparte de una cláusula except: (que, como otros han dicho que no debes usar), simplemente puedes capturar Exception :

import traceback import logging try: whatever() except Exception as e: logging.error(traceback.format_exc()) # Logs the error appropriately.

Normalmente, solo consideraría hacer esto en el nivel más externo de su código si, por ejemplo, quisiera manejar cualquier excepción no detectada antes de terminar.

La ventaja de except Exception over the bare es que hay algunas excepciones que no se SystemExit , obviamente KeyboardInterrupt y SystemExit : si las atrapa y las traga, puede hacer que sea difícil que alguien salga de su script.


Ejemplo muy simple, similar al encontrado aquí:

http://docs.python.org/tutorial/errors.html#defining-clean-up-actions

Si intenta detectar TODAS las excepciones, coloque todo el código dentro de la declaración "try:", en lugar de "imprimir" Realizar una acción que puede generar una excepción ".

try: print "Performing an action which may throw an exception." except Exception, error: print "An exception was thrown!" print str(error) else: print "Everything looks great!" finally: print "Finally is called directly after executing the try statement whether an exception is thrown or not."

En el ejemplo anterior, verías la salida en este orden:

1) Realizar una acción que puede lanzar una excepción.

2) Finalmente, se llama directamente después de ejecutar la instrucción try si se lanza una excepción o no.

3) "¡Se lanzó una excepción!" o "¡Todo se ve genial!" Dependiendo de si se lanzó una excepción.

¡Espero que esto ayude!



Puedes hacer esto para manejar excepciones generales

try: a = 2/0 except Exception as e: print e.__doc__ print e.message


Puedes pero probablemente no deberías:

try: do_something() except: print "Caught it!"

Sin embargo, esto también detectará excepciones como KeyboardInterrupt y normalmente no quieres eso, ¿verdad? A menos que vuelva a elevar la excepción de inmediato, consulte el siguiente ejemplo de la documentación :

try: f = open(''myfile.txt'') s = f.readline() i = int(s.strip()) except IOError as (errno, strerror): print "I/O error({0}): {1}".format(errno, strerror) except ValueError: print "Could not convert data to an integer." except: print "Unexpected error:", sys.exc_info()[0] raise


try: whatever() except: # this will catch any exception or error

Vale la pena mencionar que esto no es una codificación Python adecuada. Esto también detectará muchos errores que tal vez no quiera detectar.