web-dev-qa-db-fra.com

Détectez toute erreur dans Python

Est-il possible d'attraper une erreur any en Python? Peu m'importe ce que seront les exceptions spécifiques, car elles auront toutes le même repli.

26
user825286

L'utilisation de except par elle-même interceptera toute exception à court d'un défaut de segmentation.

try:
    something()
except:
    fallback()

Vous voudrez peut-être gérer KeyboardInterrupt séparément au cas où vous auriez besoin de l'utiliser pour quitter votre script:

try:
    something()
except KeyboardInterrupt:
    return
except:
    fallback()

Il y a une belle liste d'exceptions de base que vous pouvez attraper ici . J'aime aussi assez le module traceback pour récupérer une pile d'appels de l'exception. Essayez traceback.format_exc() ou traceback.print_exc() dans un gestionnaire d'exceptions.

33
lunixbochs
try:
    # do something
except Exception, e:
    # handle it

Pour Python 3.x:

try:
    # do something
except Exception as e:
    # handle it
27
Tjekkles

Vous voudrez peut-être aussi regarder sys.excepthook :

Lorsqu'une exception est levée et non interceptée, l'interpréteur appelle sys.excepthook avec trois arguments, la classe d'exception, l'instance d'exception et un objet traceback. Dans une session interactive, cela se produit juste avant le retour du contrôle à l'invite; dans un programme Python cela se produit juste avant la fin du programme. La gestion de ces exceptions de niveau supérieur peut être personnalisée en affectant une autre fonction à trois arguments à sys.excepthook.

Exemple:

def except_hook(type, value, tback):
    # manage unhandled exception here
    sys.__excepthook__(type, value, tback) # then call the default handler

sys.excepthook = except_hook
9
warvariuc