Table des matières
ToggleRésumé de l’article
Cet article porte principalement sur le Code finally
en Java
Dans cet article, l’auteur aborde le sujet du bloc finally
en Java. On se demandera à travers cet article si ce code sera toujours exécuté ?
Lors d’une exécution normale
Habituellement, le code à l'intérieur du bloc finally
s'exécute toujours après le bloc try
, même si une exception est présente. Voici un exemple :
public class ExempleFinally {
public static void main(String[] args) {
try {
System.out.println("try");
} finally {
System.out.println("finally");
}
}
}
En sortie nous aurons donc :
try
finally
Situations Exceptionnelles
Cependant, nous découvrons que dans certaines situations, l'exécution de ce bloc peut être empêchée :
System.exit()
: Si ce code est rencontré, le programme se termine immédiatement et le blocfinally
ne sera pas exécuté.Runtime.getRuntime().halt()
: Cette méthode arrête la JVM sans exécuter les hooks de fermeture, donc le blocfinally
ne sera pas exécuté.- Boucle infinie ou blocage : Si le programme reste bloqué dans une boucle infinie, le bloc
finally
ne sera logiquement pas atteint et donc pas exécuté. - Panne de courant : Si le serveur perd l'alimentation avant d'atteindre le bloc
finally
, celui-ci ne sera pas exécuté. - Crash anormal de la JVM : De même, si la JVM plante, le bloc ne sera pas exécuté.
Ces situations restent tout de même assez rares.
La différence entre System.exit()
et Runtime.getRuntime().halt()
Comme vu précédemment dans l’article, ces deux fonctions sont citées. Mais en quoi consistent-elles vraiment et quelle est la différence entre les deux ?
System.exit(int status)
- On l’utilise pour terminer un programme de manière ordonnée, par exemple à la fin d'une application.
Runtime.getRuntime().halt(int status)
- On l’utilise pour arrêter la JVM immédiatement sans nettoyage. De ce fait, on l’utilise uniquement dans des situations très critiques, lorsque l’on doit effectuer un arrêt “d’urgence”.
Conclusion
Le bloc finally
en Java s’exécute donc généralement, sauf en cas d'interruption brutale du programme.
Article original : Lien de l'article
Date de publication : 20/09/2024
Source : Medium
Auteur : Dylan Smith