BTS SIO2D
  • Accueil
  • Connexion
25 novembre 2024 par Sarah Testelin

Est ce que le code dans le bloc Finally est toujours exécuté ?

Est ce que le code dans le bloc Finally est toujours exécuté ?
25 novembre 2024 par Sarah Testelin

Table des matières

Toggle
  • Est ce que le code dans le bloc Finally est toujours exécuté ?
    • Cet article porte principalement sur le Code finally en Java
    • Lors d’une exécution normale
    • Situations Exceptionnelles
    • La différence entre System.exit() et Runtime.getRuntime().halt()
    • System.exit(int status)
    • Runtime.getRuntime().halt(int status)
    • Conclusion

Est ce que le code dans le bloc Finally est toujours exécuté ?

Cet article porte principalement sur le Code finally en Java

Dans cet article, l’auteur aborde le sujet du bloc finally en Java et on se demandera si ce code est 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 bloc finally ne sera pas exécuté.
  • Runtime.getRuntime().halt() : Cette méthode arrête la JVM sans exécuter les hooks de fermeture, donc le bloc finally 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 précédentApplication utilisant REACTArticle suivant IntelliJ IDEA 2024.2 : ces nouvelles fonctionnalités améliorent considérablement l'efficacité du développement

About The Blog

Nulla laoreet vestibulum turpis non finibus. Proin interdum a tortor sit amet mollis. Maecenas sollicitudin accumsan enim, ut aliquet risus.

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025

Catégories

  • Article Angular Killian
  • Article Clément
  • Article Unreal Engine Hugo
  • Cybersécurité
  • IA
  • Non classé
  • Projet Flutter KHM
  • Projet Hugo
  • Stage Clément
  • Stage Hugo
  • Stage Killian P
  • TP Clément

Méta

  • Inscription
  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Étiquettes

Article Développer son projet professionnel Flutter Gérer son identité professionnelle Java Stage Symfony TP

Why Lander

Lander is a design prepared
especially for the free version
of Rife WordPress Theme.

You can use this for free.
Make your website today.
Get Started Now!

Contact

734 Blackwell Street
Anchorage, Alaska
info@domain.com
+33 (0) 101 0000
+33 (0) 102 0000
Mon. - Fri. 8AM - 6PM

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025
Rife Wordpress Theme. Proudly Built By Apollo13