¿Cómo imprimir una excepción en Python?

try: something here except: print 'the whatever error occurred.' 

¿Cómo puedo imprimir el error / excepción en mi bloque except: 😕

Para Python 2.6 y versiones posteriores y Python 3.x:

 except Exception as e: print(e) 

Para Python 2.5 y versiones anteriores, use:

 except Exception,e: print str(e) 

El módulo de traceback proporciona métodos para formatear e imprimir excepciones y sus rastreos, por ejemplo, esto imprimirá una excepción como lo hace el controlador predeterminado:

 import traceback try: 1/0 except Exception: traceback.print_exc() 

Salida:

 Traceback (most recent call last): File "C:\scripts\divide_by_zero.py", line 4, in  1/0 ZeroDivisionError: division by zero 

En Python 2.6 o superior es un poco más limpio:

 except Exception as e: print(e) 

En versiones anteriores todavía es bastante legible:

 except Exception, e: print e 

En caso de que quiera pasar cadenas de error, aquí hay un ejemplo de Errores y excepciones (Python 2.6)

 >>> try: ... raise Exception('spam', 'eggs') ... except Exception as inst: ... print type(inst) # the exception instance ... print inst.args # arguments stored in .args ... print inst # __str__ allows args to printed directly ... x, y = inst # __getitem__ allows args to be unpacked directly ... print 'x =', x ... print 'y =', y ...  ('spam', 'eggs') ('spam', 'eggs') x = spam y = eggs 

(Iba a dejar esto como un comentario en la respuesta de @jldupont, pero no tengo suficiente reputación).

También he visto respuestas como la respuesta de @jldupont en otros lugares. FWIW, creo que es importante tener en cuenta que esto:

 except Exception as e: print(e) 

imprimirá la salida de error a sys.stdout de forma predeterminada. Un enfoque más apropiado para el manejo de errores en general sería:

 except Exception as e: print(e, file=sys.stderr) 

(Tenga en cuenta que debe import sys para que esto funcione). De esta manera, el error se imprime en STDERR lugar de en STDOUT , lo que permite el análisis / redirección de la salida / etc. Entiendo que la pregunta fue estrictamente sobre “imprimir un error”, pero parece importante señalar la mejor práctica aquí, en lugar de dejar de lado este detalle que podría llevar a un código no estándar para cualquier persona que finalmente no aprenda mejor.

No he usado el módulo de traceback como en la respuesta de Cat Plus Plus, y tal vez sea la mejor manera, pero pensé que lo tiraría por ahí.

Se puede hacer un levantamiento de errores de línea con afirmaciones asertivas si eso es lo que quiere hacer. Esto le ayudará a escribir el código que se puede reparar de forma estática y a revisar los errores con anticipación.

 assert type(A) is type(""), "requires a string"