Comment puis-je obtenir le nom d'une exception qui a été déclenchée en Python?
par exemple.,
try:
foo = bar
except Exception as exception:
name_of_exception = ???
assert name_of_exception == 'NameError'
print "Failed with exception [%s]" % name_of_exception
Par exemple, je intercepte plusieurs exceptions (ou toutes) et souhaite imprimer le nom de l'exception dans un message d'erreur.
Voici deux manières différentes d'obtenir le nom de l'exception:
type(exception).__name__
exception.__class__.__name__
par exemple.,
try:
foo = bar
except Exception as exception:
assert type(exception).__== 'NameError'
assert exception.__class__.__== 'NameError'
Cela fonctionne, mais il semble qu'il doit y avoir un moyen plus facile et plus direct?
try:
foo = bar
except Exception as exception:
assert repr(exception) == '''NameError("name 'bar' is not defined",)'''
name = repr(exception).split('(')[0]
assert name == 'NameError'
Vous pouvez également utiliser sys.exc_info()
. exc_info()
renvoie 3 valeurs: type, valeur, traceback. Sur la documentation: https://docs.python.org/3/library/sys.html#sys.exc_info
import sys
try:
foo = bar
except Exception:
exc_type, value, traceback = sys.exc_info()
assert exc_type.__== 'NameError'
print "Failed with exception [%s]" % name_of_exception