Les blocs try-catch-finally en Java

Pour rendre un programme Java aussi robuste que possible, il doit être capable de gérer les exceptions. Le compilateur fait sa part en ne vous permettant pas de compiler un programme jusqu'à ce qu'il soit syntaxiquement correct et puisse également signaler les exceptions vérifiées qui doivent être gérées. Mais les exceptions susceptibles de causer le plus de maux de tête sont celles qui apparaissent une fois le programme exécuté. Pour aider à gérer ces exceptions, le langage Java fournit les blocs try-catch-finally.

Le bloc d'essai

le

essayer
Le bloc contient toutes les instructions susceptibles de provoquer une exception. Par exemple, si vous lisez des données à partir d'un fichier à l'aide du
FileReader
classe, vous devez gérer la
IOExceptions
associé à l'utilisation d'un
FileReader
objet, par exemple,
FileNotFoundException
et
IOException
. Pour garantir que cela se produit, vous pouvez placer les instructions qui traitent de la création et de l'utilisation du
FileReader
objet à l'intérieur d'un
essayer
bloc: Cependant, le code est incomplet car, pour que l'exception soit gérée, nous avons besoin d'un endroit pour qu'elle soit interceptée. Cela se produit dans le

bloc de capture.Le bloc de capture

le

capture
bloc (s) fournissent un endroit pour gérer l'exception levée par les instructions dans un
essayer
bloquer. le
capture
le bloc est défini directement après la
essayer
bloquer. Il doit spécifier le type d'exception qu'il gère. Par exemple, le
FileReader
objet défini dans le code ci-dessus est capable de lancer un
FileNotFoundException
ou un
IOException
. On peut spécifier deux
capture
pour gérer ces deux exceptions: dans le
FileNotFoundExceptioncatch
bloquer, nous pourrions placer du code pour demander à l'utilisateur de trouver le fichier pour nous, puis réessayer de le lire. dans le
IOException
catch block, nous pourrions simplement transmettre l'erreur d'E / S à l'utilisateur et lui demander d'essayer autre chose. Dans les deux cas, nous avons fourni au programme un moyen de détecter une exception et de la gérer de manière contrôlée.
Dans Java SE 7, il est devenu possible de gérer plusieurs exceptions en une
capture
bloquer. Si le code que nous voulions placer dans les deux
capture
les blocs ci-dessus étaient exactement les mêmes que nous pourrions écrire le code comme ceci à la place: Afin de faire un peu de ménage en ce qui concerne les ressources, nous pouvons ajouter un bloc finally. Après tout, nous voulons libérer le fichier que nous avons lu une fois que nous avons terminé.

Le bloc enfin

Les instructions du bloc finally sont toujours exécutées. Ceci est utile pour nettoyer les ressources en cas d'exécution du bloc try sans exception et dans les cas où il y a une exception. Dans les deux cas, nous pouvons fermer le fichier que nous avons utilisé. 

Le bloc finally apparaît directement après le dernier bloc catch: