La clé enfin en Java est généralement utilisée avec Try. Exemple pour illustrer:
classe publique TryandFinallyTest {public static void main (String [] args) lance l'exception {try {int a = testfinally (2); ) {int b = testfinally (1); b); b = testfinal (4); : :::::::::::::::::::::::::::::::::::- : :::::::::::::::::::::::::::::::::::- ::::::::::::::::::::::::::::::: essayez si le programme lance une exception ou une autre interruption, le contenu de Enfin sera exécuté Switch (i) {cas 1: ++ i; Break; // Le programme se termine normalement le cas 2: lancez une nouvelle exception (exception sous test "); ("Enfin, quand i =" + drapeau);} Retour I;
Les résultats de l'exécution sont les suivants
Enfin venant quand i = 2 finalement quand i = 1 le résultat est renvoyé normalement b: 2 finalement à venir quand i = 3 brisets Résultat: 3 finalement quand i = 4return renvoie le résultat: -1
Le résultat montre que quelle que soit la situation ci-dessus, le bloc final sera toujours exécuté.
Par rapport à d'autres modèles de langue, le mot-clé enfin est le meilleur ajout au modèle de gestion des exceptions Java. La structure enfin permet au code de toujours exécuter, que l'exception se produise ou non. Utilisez enfin pour maintenir l'état interne d'un objet et nettoyer les ressources non mémoire. Sans enfin, votre code sera déroutant. Par exemple, le code suivant illustre comment vous devez écrire du code pour libérer des ressources non mémoire sans utiliser enfin:
import java.net. *; .Accept ();
Ce code crée une prise et appelle la méthode d'acceptation. Avant de quitter la méthode, vous devez fermer cette prise pour éviter les vulnérabilités des ressources. Pour accomplir cette tâche, nous appelons Close à // 2, qui est la dernière déclaration de la méthode. Mais que se passe-t-il si une exception se produit dans le bloc d'essai? Dans ce cas, l'appel serré à // 2 ne se produit jamais. Par conséquent, vous devez attraper cette exception et insérer un autre appel à fermer à // 1 avant de rééditer cette exception. Cela garantit que la prise est fermée avant de quitter la méthode.
Écrire du code comme celui-ci est à la fois lourd et sujet aux erreurs, mais il est essentiel sans enfin. Malheureusement, dans les langues sans mécanisme enfin, les programmeurs peuvent oublier d'organiser leur code de cette manière, ce qui entraîne des vulnérabilités de ressources. La clause enfin en Java résout ce problème. Enfin, le code précédent peut être réécrit dans le formulaire suivant:
import java.net. *; .Accept (); // autre code ici ...} enfin {ss.close ();
Le bloc enfin garantit que la méthode étroite est toujours exécutée, si une exception est émise dans le bloc d'essai. Par conséquent, il est assuré que la méthode de fermeture est toujours appelée avant de quitter la méthode. De cette façon, vous pouvez être sûr que la prise est fermée et que vous n'avez pas divulgué de ressources. Il n'y a pas besoin d'un autre bloc de capture dans cette méthode. Le bloc de capture est fourni dans le premier exemple juste pour fermer la prise, maintenant cela est enfin fermé. Si vous fournissez un bloc de capture, le code du bloc final est exécuté une fois le bloc de capture terminé.
Le bloc enfin doit être utilisé avec le bloc d'essai ou d'essai / capture. De plus, il n'est pas possible de quitter le bloc d'essai sans exécuter son bloc final. Si le bloc final existe, il s'exécutera toujours. (Cette instruction est correcte à partir de ce point. .