45 votes

Pourquoi finalement block s'exécute après avoir appelé sys.exit(0) dans except block ?

Je suis nouveau sur Python. Je veux juste savoir pourquoi le finally s'exécute après avoir appelé sys.exit(0) dans le bloc except

Code:

 import sys

def sumbyzero():
    try:
        10/0
        print "It will never print"
    except Exception:
        sys.exit(0)
        print "Printing after exit"
    finally:
        print "Finally will always print"

sumbyzero() 

À propos, j'essayais juste de faire la même chose qu'en Java, où le bloc finally n'est pas exécuté lorsque System.exit(0) est dans le bloc catch

9voto

NilColor Points 1524

A propos de ton exemple :

Une clause finally est toujours exécutée avant de quitter l'instruction try, si une exception s'est produite ou non.

Cela provient de la partie Erreurs et exceptions de la documentation Python. Donc - votre bloc finally sera toujours exécuté dans l'exemple que vous montrez à moins que vous n'utilisiez os._exit() . Mais vous devez l'utiliser à bon escient...

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