In Java, le eccezioni sono una delle tante strutture che governano il flusso di controllo di un programma. Nello specifico, sono effetti collaterali indesiderati della normale esecuzione di un programma. Durante la scrittura di codice che può incontrare eccezioni, il programmatore deve definire nuove istruzioni per il programma se incontra un’eccezione, un processo noto come “gestione delle eccezioni”. I gestori di eccezioni sono costituiti da tre blocchi distinti: try, catch e infine.
Eccezioni Java
Quando un programma chiama un metodo che si comporta in modo inaspettato, si dice che abbia riscontrato una “eccezione”. Ad esempio, se il programma tenta di dividere un numero per zero o di caricare un file che non esiste, il programma potrebbe non comportarsi come previsto e genererà un’eccezione per segnalare questo errore. Se un metodo è definito per generare un’eccezione nel corpo del metodo, è possibile richiamarlo solo all’interno di un gestore di eccezioni o passare l’errore all’albero dichiarando che anche il metodo che lo invoca genera la stessa eccezione.
Prova i blocchi
In un gestore di eccezioni riuscito, il metodo che genera l’eccezione deve essere contenuto in un blocco “try”, come in “try {exceptionThrowingMethod ();}” Dopo che il blocco try è stato definito, il programmatore definisce i blocchi catch che catturano i metodi delle eccezioni contenuto nel lancio del blocco try.
Cattura blocchi
Un singolo blocco try può avere più blocchi “catch” per definire comportamenti diversi quando si incontra un’eccezione. Se un programma incontra un’eccezione definita in più blocchi catch, eseguirà per primo il blocco catch più in alto. Poiché tutte le eccezioni discendono dalla classe delle eccezioni, ciò significa che se il tuo primo blocco catch legge “catch (Exception e) {}”, un programma eseguirà sempre quel blocco quando incontra un’eccezione, e mai nessuno degli altri. Disporre i blocchi di cattura dal più specifico al meno specifico se si desidera un controllo dettagliato sul programma.
Infine Blocks
Un blocco “finalmente” è un componente opzionale di un gestore di eccezioni. Usalo per definire il comportamento che dovrebbe essere sempre eseguito anche se viene rilevata un’eccezione. In alcuni casi è necessario perché non è possibile garantire l’esecuzione dell’ultima parte del blocco try. Se un’eccezione viene lanciata e catturata, quel blocco verrà interrotto a quel punto. Ad esempio, l’inserimento di “InputStream.close ()” in un blocco finalmente garantisce che, indipendentemente da un’eccezione lanciata in precedenza nel codice, i flussi verranno chiusi in modo sicuro.