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