J'ai besoin d'arrêter mon programme lorsqu'une exception est levée en Python. Comment puis-je implémenter cela?
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é.
import sys
try:
print("stuff")
except:
sys.exit(1) # exiing with a non zero value is better for returning from an error
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.
Pour autant que je sache, si une exception n'est pas interceptée par votre script, elle sera interrompue.
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.