python sys.la sortie ne fonctionne pas en essayer [dupliquer]
Cette question a déjà une réponse ici:
Python 2.7.5 (default, Feb 26 2014, 13:43:17)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> try:
... sys.exit()
... except:
... print "in except"
...
in except
>>> try:
... sys.exit(0)
... except:
... print "in except"
...
in except
>>> try:
... sys.exit(1)
... except:
... print "in except"
...
in except
Pourquoi Je ne suis pas capable de déclencher sys.exit() dans essayer, toutes les suggestions...!!!
le code affiché ici contient tous les détails de la version.
j'ai essayé toutes les façons possibles je sais pour le déclencher, mais j'ai échoué. Il arrive à 'exception de' bloquer.
Merci d'avance..
2 réponses
sys.exit()
soulève une exception, à savoir SystemExit
. C'est pour ça que tu atterris dans la zone!--5-->-bloc.
par exemple:
import sys
try:
sys.exit()
except:
print(sys.exc_info()[0])
Cela vous donne:
<type 'exceptions.SystemExit'>
bien que je ne puisse pas imaginer que quelqu'un ait une raison pratique de le faire, vous pouvez utiliser cette construction:
import sys
try:
sys.exit() # this always raises SystemExit
except SystemExit:
print("sys.exit() worked as expected")
except:
print("Something went horribly wrong") # some other exception got raised
basé sur le wiki python:
Depuis exit () ultimement "only" soulève une exception, elle ne sort du processus que lorsqu'elle est appelée à partir du thread principal, et l'exception n'est pas interceptée.
Et:
exit
fonction n'est pas appelée lorsque le programme est tué par un signal, quand un Python fatale erreur interne est détecté, ou sios._exit()
est appelée.
Donc, Si vous utilisez sys.exit()
dans un try
bloc python après avoir soulevé le SystemExit
exception python refuse de compléter le et exécute le exception
bloc.
maintenant, du point de vue de la programmation, vous n'avez pas besoin de mettre quelque chose qui, vous le savez, soulève définitivement une exception dans un try
bloc. Au lieu de cela, vous pouvez soit soulever un SystemExit
exception manuelle ou comme une approche plus pythonique si vous ne voulez pas perdre les fonctionnalités de sys.exit()
comme passer un argument optionnel à son constructeur, vous pouvez appeler sys.exit()
dans un finally
,else
ou encore except
bloc.
Méthode 1 (non recommandée)
try:
# do stuff
except some_particular_exception:
# handle this exception and then if you want
# do raise SystemExit
else:
# do stuff and/or do raise SystemExit
finally:
# do stuff and/or do raise SystemExit
Méthode 2 (Recommandée):
try:
# do stuff
except some_particular_exception:
# handle this exception and then if you want
# do sys.exit(stat_code)
else:
# do stuff and/or do sys.exit(stat_code)
finally:
# do stuff and/or do sys.exit(stat_code)