Come gestire un'eccezione usando try-catch
Lo scopo di un blocco try-catch è quello di rilevare e gestire un'eccezione generata da codice in esecuzione. Alcune eccezioni possono essere gestite in un blocco catch
e il problema viene risolto senza che l'eccezione venga generata nuovamente. Molto spesso, invece, l'unica cosa che si possa fare è assicurarsi che venga generata l'eccezione appropriata.
Esempio
In questo esempio, IndexOutOfRangeException non è l'eccezione più appropriata: ArgumentOutOfRangeException ha più senso per il metodo perché l'errore è causato dall'argomento index
passato dal chiamante.
static int GetInt(int[] array, int index)
{
try
{
return array[index];
}
catch (IndexOutOfRangeException e) // CS0168
{
Console.WriteLine(e.Message);
// Set IndexOutOfRangeException to the new exception's InnerException.
throw new ArgumentOutOfRangeException("index parameter is out of range.", e);
}
}
Commenti
Il codice che genera un'eccezione è racchiuso nel blocco try
. Subito dopo di essa viene aggiunta un'istruzione catch
per gestire IndexOutOfRangeException
, se si verifica. Il blocco catch
gestisce l'eccezione IndexOutOfRangeException
e genera al suo posto l'eccezione più appropriata ArgumentOutOfRangeException
. Per offrire al chiamante quante più informazioni possibili, specificare l'eccezione originale come InnerException della nuova eccezione. Poiché la proprietà InnerException è readonly, è necessario assegnarla nel costruttore della nuova eccezione.