|
- 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 éxécuté *dans tous les cas*,
- qu'une exception ait été levée 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
|