print - ¿Cómo imprimir un error en Python?
raise valueerror (6)
(Iba a dejar esto como un comentario en la respuesta de @jldupont, pero no tengo suficiente reputación).
He visto respuestas como la respuesta de @jldupont en otros lugares también. FWIW, creo que es importante tener en cuenta que esto:
except Exception as e:
print(e)
imprimirá la salida de error a sys.stdout
por defecto. 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 tiene que 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 iba a lanzar.
try:
something here
except:
print ''the whatever error occurred.''
¿Cómo puedo imprimir el error en mi bloque except:
:?
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 <module>
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
...
<type ''exceptions.Exception''>
(''spam'', ''eggs'')
(''spam'', ''eggs'')
x = spam
y = eggs
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)
Se puede hacer un aumento de errores de línea con afirmaciones afirmativas si eso es lo que quiere hacer. Esto le ayudará a escribir código estáticamente corregible y verificar errores antes.
assert type(A) is type(""), "requires a string"