14 02 Finally

Dans cette vidéo, nous poursuivons notre exploration de la gestion des exceptions en Java en introduisant le mot-clé finally. Jusqu'à présent, nous avons vu que lorsqu'une exception est levée dans un bloc try, l'exécution saute directement vers le bloc catch correspondant à l'exception levée (par exemple ArithmeticException). Cette mécanique fonctionne très bien, mais il manque parfois une étape : exécuter du code quelle que soit l'issue.

Le rôle de la clause finally

Imaginons que vous vouliez afficher un message ou libérer une ressource, qu'une exception soit levée ou non. C'est précisément à cela que sert la clause finally. Sa syntaxe est simple : on l'ajoute après le ou les blocs catch, et tout ce qu'elle contient s'exécute systématiquement.

try {
    // code potentiellement risqué
} catch (ArithmeticException e) {
    // traitement de l'exception
} finally {
    System.out.println("Coucou ça va");
}

Dans cet exemple, le message « Coucou ça va » s'affiche aussi bien quand le bloc try réussit que quand le bloc catch rattrape une exception. À la compilation et à l'exécution, vous verrez que cette ligne sort dans tous les cas — c'est exactement ce qu'on attend d'un finally.

Pourquoi est-ce utile ? Le cas d'usage typique est la libération de ressources : fermer un fichier, fermer une connexion à une base de données, relâcher un verrou. Si une exception survient en plein milieu du traitement, vous ne voulez pas laisser le fichier ouvert ou la connexion pendante. Le bloc finally garantit que ce code de nettoyage tournera quoi qu'il arrive.

Dans le prochain cours, nous allons justement aborder la gestion des fichiers en Java, et vous verrez le finally reprendre tout son sens. Compilons notre exemple, observons le résultat dans la console, et donnons-nous rendez-vous dans la suite.

En résumé

Cette leçon couvre le bloc `finally`, un élément clé de la gestion des exceptions en Java. Le bloc `finally` s'exécute systématiquement, qu'une exception soit levée ou non, permettant d'effectuer des actions garanties comme la fermeture de fichiers. C'est un outil essentiel pour assurer le nettoyage des ressources dans vos programmes.

Points clés

  • Le bloc `finally` s'exécute toujours, indépendamment de la présence d'une exception ou de sa capture par `catch`
  • Utilisez `finally` pour garantir l'exécution d'actions critiques comme fermer des fichiers ou libérer des ressources
  • La structure `try/catch/finally` permet une gestion complète des exceptions avec un nettoyage systématique

Questions fréquentes

Quand s'exécute le bloc finally ?

Le bloc `finally` s'exécute toujours, qu'une exception soit levée ou non, et qu'elle soit capturée par `catch` ou non.

À quoi sert le bloc finally en pratique ?

Il sert principalement à fermer des fichiers, libérer des ressources ou effectuer des opérations de nettoyage qui doivent s'exécuter de manière garantie, indépendamment des erreurs.

Peut-on avoir un try/finally sans catch ?

Oui, vous pouvez utiliser `finally` sans `catch`. Le bloc `finally` s'exécutera quoi qu'il arrive, même si une exception est levée.