2009-09-27 30 views
249
try: 
    something here 
except: 
    print 'the whatever error occurred.' 

¿Cómo puedo imprimir el error en mi bloque except:?¿Cómo imprimir un error en Python?

+0

sugiero cambiar el título: no está imprimiendo el __error__, está imprimiendo la __exception__. Ellos son diferentes. – FaithReaper

Respuesta

352

Para Python 2.6 y versiones posteriores:

except Exception as e: print(e) 

Para Python 2.5 y anteriores, el uso :

except Exception,e: print str(e) 
+1

parezca lo más cercano a lo que el OP quería. – physicsmichael

+18

la parte 'str()' es redundante - 'print e' es exactamente lo mismo que' print str (e) '[[es decir,' print' hace su propia cadena]]. –

+4

@alex: ¿no depende de la subclase (si existe) de la excepción lanzada? El método __repr__ podría no haberse implementado mientras que __str__ podría tenerlo. En cualquier caso, no hay un buen sustituto para una implementación incompleta, supongo ;-) – jldupont

31

En caso de que quiera pasar cadenas de error, aquí es un ejemplo de Errors and Exceptions (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 
... 
<type 'exceptions.Exception'> 
('spam', 'eggs') 
('spam', 'eggs') 
x = spam 
y = eggs 
+3

Muy completo, aunque 'como' no funciona antes de que python 2.6 – foosion

160

traceback módulo proporciona métodos para formatear e imprimir excepciones y sus tracebacks, p. esta excepción se imprimiría como el controlador predeterminado hace:

recaudación de error
except: traceback.print_exc() 
+21

Esta debería ser la respuesta correcta –

+0

Estoy de acuerdo con @KarthikT en que esta debería ser la respuesta correcta. –

2

Un forro se puede hacer con las declaraciones de aserción si eso es lo que quiere hacer. Esto lo ayudará a escribir código estáticamente reparable y a verificar los errores con anticipación.


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

145

En Python 2.6 o mayor que es un poco más limpia:

except Exception as e: print(e) 

En versiones anteriores es todavía bastante legible:

except Exception, e: print e 
+10

En python3, debe usar la primera vía, con "como". –