FINALLY |
Final |
---|---|
Python |
Syntaxe
finally: |
Description
Ce mot réservé permet un groupe d'instructions devant exécuter avant de quitter une exception.
Remarques
- Le mot clef finally est utilisé pour exécuter du code systématiquement, qu'une exception se produise ou non : Ce bloc est souvent utilisé pour libérer des ressources, comme fermer un fichier ou une connexion réseau, même si une erreur survient dans le bloc try.
- Le bloc finally s'exécute toujours, même en présence d'un return ou d'une exception : Cela signifie que même si on quitte une fonction avec un return dans le bloc try ou except, les instructions dans finally seront tout de même exécutées. C'est un comportement garanti par le langage.
- Le bloc finally doit être associé à un try : On ne peut pas écrire un bloc finally seul. Il peut apparaître avec ou sans except, mais le bloc try est obligatoire. Exemples valides : try/finally ou try/except/finally.
- finally est souvent utilisé pour garantir la stabilité du programme : Par exemple, lorsqu'un fichier est ouvert, finally garantit qu'il sera bien fermé. Cela évite les fuites de ressources et garantit une bonne gestion de la mémoire ou des connexions.
- Les erreurs survenant dans finally ne suppriment pas les exceptions précédentes : Cependant, si une exception est levée dans finally, elle peut masquer l'exception originale. Il faut donc être prudent et gérer les erreurs possibles même dans le bloc finally.
- Le bloc finally est exécuté avant toute sortie définitive du programme : Cela inclut l'appel à sys.exit() ou une interruption par KeyboardInterrupt. C'est donc l'endroit idéal pour effectuer des sauvegardes ou des nettoyages critiques avant la fermeture d'une application.
- Les instructions dans finally ne sont pas censées modifier l'état de l'exception en cours : Elles doivent rester non intrusives et se concentrer sur les tâches finales. Modifier des variables d'exception ou lever d'autres erreurs dans finally peut rendre le débogage difficile.
- L'utilisation de finally rend le code plus robuste et professionnel : Dans des applications réelles, on y place des opérations indispensables : déconnexion de base de données, fermeture de sockets, libération de verrous,... Cela permet d'éviter que le programme ne laisse des ressources dans un état instable.
Dernière mise à jour : Mercredi, le 16 mai 2018