web-dev-qa-db-fra.com

Comment arrêter un programme lorsqu'une exception est levée en Python?

J'ai besoin d'arrêter mon programme lorsqu'une exception est levée en Python. Comment puis-je implémenter cela?

42
user46646

Vous pouvez arrêter d'attraper l'exception, ou - si vous avez besoin de l'attraper (pour effectuer une manipulation personnalisée), vous pouvez sur-relancer:

try:
  doSomeEvilThing()
except Exception, e:
  handleException(e)
  raise

Notez que taper raise sans passer un objet d'exception entraîne la conservation du traceback d'origine. En général, c'est beaucoup mieux que raise e.

Bien sûr, vous pouvez également appeler explicitement

import sys 
sys.exit(exitCodeYouFindAppropriate)

Cela provoque le déclenchement de l'exception SystemExit et (à moins que vous ne l'attrapiez quelque part) termine votre application avec le code de sortie spécifié.

44
Abgan
import sys

try:
  print("stuff")
except:
  sys.exit(1) # exiing with a non zero value is better for returning from an error
40
Loïc Wolff

Si vous ne gérez pas d'exception, il propagera la pile d'appels jusqu'à l'interpréteur, qui affichera alors un suivi et quittera. IOW: vous n'avez pas à faire n'importe quoi pour faire sortir votre script lorsqu'une exception se produit.

12
bruno desthuilliers

Pour autant que je sache, si une exception n'est pas interceptée par votre script, elle sera interrompue.

6
Keltia
import sys

try:
    import feedparser
except:
    print "Error: Cannot import feedparser.\n" 
    sys.exit(1)

Ici, nous sortons avec un code d'état de 1. Il est généralement également utile de générer un message d'erreur, d'écrire dans un journal et de nettoyer.

5
Pranab