Le funzionalità di gestione delle eccezioni del linguaggio C# consentono di gestire situazioni impreviste o eccezionali che si verificano durante l’esecuzione di un programma. Nella gestione delle eccezioni vengono utilizzate le parole chiave try, catch e finally per tentare di eseguire azioni che potrebbero non riuscire, per gestire gli errori e per pulire successivamente le risorse. Le eccezioni possono essere generate da Common Language Runtime (CLR), da librerie di terze parti o dal codice dell’applicazione mediante la parola chiave throw.
In questo esempio un metodo verifica la presenza di una divisione per zero e rileva l’errore. Senza la gestione delle eccezioni, il programma verrebbe chiuso con un errore simile al seguente: DivideByZeroException non è stata gestita.
int DivisioneSicura(int x, int y)
{
try
{
return (x / y);
}
catch (System.DivideByZeroException dbz)
{
System.Console.WriteLine("Attenzione divisione per zero!!!");
// Stampo il messaggio di errore
System.Console.WriteLine(dbz.Message);
// Stampo il numero di riga del sorgente dove si trova l'errore
System.Console.WriteLine(dbz.StackTrace);
return 0;
}
}
Cenni preliminari sulle eccezioni
Le eccezioni dispongono delle seguenti proprietà:
- Quando nell’applicazione si verifica una circostanza eccezionale, ad esempio una divisione per zero o un problema di memoria insufficiente, viene generata un’eccezione.
- Utilizzare un blocco try intorno alle istruzioni che potrebbero generare eccezioni.
- Quando si verifica un’eccezione all’interno del blocco try, il flusso di controllo passa immediatamente a un gestore eccezioni associato, se presente.
- Se per una determinata eccezione non sono presenti gestori, l’esecuzione del programma verrà interrotta con un messaggio di errore.
- Se un blocco catch definisce una variabile dell’eccezione, è possibile utilizzarlo per ottenere ulteriori informazioni sul tipo di eccezione che si è verificata.
- Le azioni che possono generare un’eccezione vengono eseguite con la parola chiave try.
- Un gestore eccezioni è un blocco di codice che viene eseguito quando si verifica un’eccezione. Per la definizione di un gestore eccezioni, in C# viene utilizzata la parola chiave catch.
- Le eccezioni possono essere generate in modo esplicito da un programma mediante la parola chiave throw.
- Gli oggetti eccezione contengono informazioni dettagliate sull’errore, tra cui lo stato dello stack di chiamate e una descrizione dell’errore, quindi per stampare la descrizione dell’errore uso l’istruzione System.Console.WriteLine(dbz.Message); infine per stampare il numero di riga dove si trova l’errore System.Console.WriteLine(dbz.StackTrace);
Fonte: msdn.microsoft.com