Else et finally#
else#
Si on rajoute un bloc else après le except, le bloc n’est éxécuté que si
aucune exception n’a été levée :
try:
tente_un_truc_risqué()
except (ZeroDivisionError, FileNotFoundError):
print("raté")
else:
print("ouf, ça a marché")
finally#
Si on rajoute un bloc finally après le except, le bloc est exécuté
dans tous les cas, qu’une exception ait été levé ou non. On s’en sert
souvent pour « annuler » du code qui aurait été utilisé dans le bloc try :
personnage = Personnage()
try:
personnage.entre_en_scène()
personnage.tente_un_truc_risqué()
except ZeroDivisionError:
print("raté")
finally:
personnage.quitte_la_scène()
Si dans le bloc try une exception différente de ZeroDivisionError est
levée, on passera quand même dans le bloc finally, puis l’exception
sera levée à nouveau.
TODO: exemple plus complet