Un’istruzione rischiosa può provocare un evento eccezionale che richiede un trattamento adeguato
try { /* * sequenza di istruzioni * ...rischiose... */ } catch(Eccezione e) { /* * sequenza di istruzioni per il * ...trattamento... * dell'eccezione */ }
È possibile prevedere un trattamento specifico per ogni eventuale eccezione
try { /* * sequenza di istruzioni * ...rischiose... */ } catch(Eccezione_1 e) { // trattamento 1 } ... catch(Eccezione_n e) { // trattamento n }
Se un’istruzione all’interno del blocco try{} provoca un’eccezione il controllo passa al primo blocco catch(){} che prevede la stessa eccezione oppure un’eccezione gerarchicamente superiore.
Nell’eventualità che si verifichi un’eccezione non prevista è possibile catturarla con Exception (la classe gerarchicamente più elevata tra le eccezioni)
try { /* * sequenza di istruzioni * ...rischiose... */ } catch(Eccezione_1 e) { // trattamento 1 } ... catch(Eccezione_n_1 e) { // trattamento n-1 } catch(Exception e) { // trattamento n }
Alla struttura try...catch... si può aggiungere un trattamento finale (che sarà svolto comunque…)
try { /* * sequenza di istruzioni * ...rischiose... */ } catch(Eccezione_1 e) { // trattamento 1 } ... catch(Eccezione_n e) { // trattamento n } finally { // trattamento n+1 }