Lorsque l'exception est lancée, l'exécution de la méthode habituelle fera un tour non linéaire abrupte. Dépendent de la façon dont la méthode est codée, les exceptions peuvent même faire revenir la méthode prématurément. C'est un problème dans certaines méthodes. Par exemple, si une méthode ouvre un élément de fichier et la ferme puis sort, vous ne voulez pas que le code qui ferme le fichier soit contourné par le mécanisme de gestion des exceptions. Enfin, les mots clés sont conçus pour gérer ces accidents.
Créez enfin un bloc de code. Ce bloc de code est exécuté avant qu'un autre essai / catch apparaisse une fois un bloc d'essai / catch terminé. Enfin, Block sera exécuté, qu'il y ait une exception lancée ou non. Si l'exception est lancée, il sera finalement exécuté même sans clause de capture qui correspond à l'exception. Une méthode sera renvoyée d'un bloc d'essai / capture au programme d'appel à chaque fois qu'elle est appelée, après une exception non apprise ou une instruction de retour explicite, la clause finalement sera toujours exécutée avant le retour de la méthode. Ceci est utile lors de la fermeture de la poignée du fichier et de la libération des autres ressources allouées au début de la méthode. La clause enfin est facultative, avec ou sans. Cependant, chaque déclaration d'essai nécessite au moins une clause de prise ou enfin.
L'exemple suivant montre 3 méthodes de sortie différentes. Chacun exécute la clause enfin:
// démontre enfin.class enfindemo {// via une exception de la méthode. System.out.println ("Proca's enfin");}} // Retour à l'intérieur d'un bloc d'essai. Soulien Out.println ("ProcB's enfin");}} // Exécuter un bloc d'essai normalement.Static void procc () {try {System.out.println ("Inside procc"); "Procc's enfin"); ();}}
Dans cet exemple, ProCA () interrompt l'essai prématurément en lançant une exception. La clause finale est exécutée à la sortie. L'instruction ProCB () TRYS des sorties via une instruction RETOUR. La clause enfin est exécutée avant les rendements procb (). Dans procc (), l'instruction TRY est exécutée normalement sans erreurs. Cependant, Block sera finalement exécuté.
Remarque: Si le bloc final est utilisé en conjonction avec un essai, le bloc final sera exécuté avant la fin de l'essai.
Ce qui suit est la sortie générée par le programme ci-dessus:
Enfin, à l'intérieur de Procaproca, il a pris le point