Eccezioni

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
}