Vous êtes peut-être en essayant d'attraper une Exception et c'est la capture de la SystemExit
exception soulevée par sys.exit()
?
import sys
try:
sys.exit(1) # Or something that calls sys.exit()
except SystemExit as e:
sys.exit(e)
except Exception:
# Cleanup and reraise. This will print a backtrace.
# (Insert your cleanup code here.)
raise
En général, la capture d'Exception est une mauvaise idée. Vous allez attraper toutes sortes de choses que vous ne voulez pas attraper -- SystemExit
-- et il peut également masquer vos propres erreurs de programmation. Mon exemple ci-dessus est ridicule, sauf si vous êtes en train de faire quelque chose en termes de nettoyage. Vous pouvez le remplacer avec:
import sys
sys.exit(1) # Or something that calls sys.exit().
Si vous avez besoin pour quitter sans lever SystemExit:
import os
os._exit(1)
Je fais ceci, dans le code qui s'exécute sous unittest et des appels fork()
. Unittest obtient lors de la fourche processus soulève SystemExit
. C'est certainement un cas de coin!