51 votes

Python 3 try-sauf tous avec erreur

Est-il possible de faire un essai, sauf attraper tout ce qui affiche toujours l'erreur sans prendre chaque exception? J'ai un cas où les exceptions qui va arriver une fois par jour tous les quelques jours dans un script en cours d'exécution 24/7. Je ne peux pas laisser le script mourir, mais elles n'ont pas d'importance, parce qu'il réessaie, peu importe, tant que j'essaie à l'exception de tout. Ainsi, alors que j'traquer les derniers de rares exceptions près, je veux ouvrir une session à ceux d'un fichier pour l'avenir de débogage.

exemple:

try:
    print(555)
except:
    print("type error: "+ str(the_error))

De toute façon pour remplacer the_error avec une trace de pile ou quelque chose de similaire?

119voto

Cyzanfar Points 4204

Oui, vous pouvez intercepter toutes les erreurs comme ceci:

 try:
    print(555)
except Exception as e:
    print("type error: " + str(e))
 

Pour la trace de la pile, j'utilise généralement le module traceback :

 import traceback

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))
    print(traceback.format_exc())
 

13voto

Joao Vitorino Points 1164

Tu peux faire:

    try:
       print(555)
   except Exception as err:
      print("Erro {}".format(err))
 

Ou utilisez une relance

Les doc sont toujours tes amis

Astuce: évitez d'utiliser "sauf:"

Utilisez quelque chose de plus descriptif comme

 ...
except (ValueErro, KeyError):
 

À moins que votre code ne soit très bien testé, vous ne pouvez pas résoudre toutes les erreurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X