I blocchi try-catch-finally in Java

Per rendere un programma Java il più solido possibile, deve essere in grado di gestire le eccezioni. Il compilatore fa la sua parte non consentendo di compilare un programma fino a quando non è sintatticamente corretto e può anche indicare eccezioni verificate che devono essere gestite. Ma le eccezioni che possono causare la maggior parte dei mal di testa sono quelle che appaiono quando il programma è in esecuzione. Per aiutare a gestire queste eccezioni, il linguaggio Java fornisce i blocchi try-catch-finally.

Il tentativo Block

Il

provare
Il blocco racchiude tutte le istruzioni che potrebbero causare un'eccezione. Ad esempio, se stai leggendo dati da un file usando il
FileReader
classe, ci si aspetta che tu gestisca il file
IOExceptions
associato all'utilizzo di a
FileReader
oggetto, ad esempio,
FileNotFoundException
e
IOException
. Per garantire che ciò accada, è possibile inserire le dichiarazioni relative alla creazione e all'utilizzo di
FileReader
oggetto all'interno di a
provare
block: Tuttavia, il codice è incompleto perché, affinché l'eccezione venga gestita, abbiamo bisogno di un posto per essere catturato. Questo succede nel

blocco di cattura Il blocco di cattura

Il

catturare
i blocchi forniscono un posto per gestire l'eccezione generata dalle istruzioni all'interno di a
provare
bloccare. Il
catturare
il blocco viene definito direttamente dopo il
provare
bloccare. Deve specificare il tipo di eccezione che sta gestendo. Ad esempio, il
FileReader
l'oggetto definito nel codice sopra è in grado di lanciare a
FileNotFoundException
o un
IOException
. Possiamo specificare due
catturare
blocchi per gestire entrambe queste eccezioni: In
FileNotFoundExceptioncatch
blocchiamo potremmo inserire il codice per chiedere all'utente di trovare il file per noi e quindi provare a leggere nuovamente il file. Nel
IOException
catch block, potremmo semplicemente trasmettere l'errore I / O all'utente e chiedere loro di provare qualcos'altro. In entrambi i casi, abbiamo fornito un modo al programma di rilevare un'eccezione e gestirla in modo controllato.
In Java SE 7, è diventato possibile gestire più eccezioni in una
catturare
bloccare. Se il codice che volessimo inserire nei due
catturare
i blocchi sopra erano esattamente gli stessi, potremmo invece scrivere il codice in questo modo: per fare un po 'di pulizie per quanto riguarda le risorse, possiamo aggiungere un blocco infine. Dopotutto, vogliamo rilasciare il file che abbiamo letto una volta terminato.

Il blocco finalmente

Le istruzioni nel blocco finally vengono sempre eseguite. Ciò è utile per ripulire le risorse in caso di esecuzione del blocco try senza eccezioni e nei casi in cui esiste un'eccezione. In entrambe le eventualità, possiamo chiudere il file che abbiamo utilizzato. 

Il blocco finally appare direttamente dopo l'ultimo blocco catch: