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 SafeDivision(int x, int y)
{
try
{
return (x / y);
}
catch (System.DivideByZeroException dbz)
{
System.Console.WriteLine("Division by zero attempted!");
return 0;
}
}
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.
-
Il codice di un blocco finally viene eseguito anche se viene generata un'eccezione, consentendo in tal modo a un programma di rilasciare risorse.
Per ulteriori informazioni sulle eccezioni e sulla relativa gestione, vedere i seguenti argomenti:
Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:
-
8.9.5 Istruzione throw
-
8.10 Istruzione try
-
16 Eccezioni
Riferimenti
Parole chiave di C#throw (Riferimenti per C#)
try-catch (Riferimenti per C#)
try-finally (Riferimenti per C#)
try-catch-finally (Riferimenti per C#)
Concetti
Guida per programmatori C#Cenni preliminari sulle eccezioni
Altre risorse
Linee guida di progettazione delle eccezioniGestione e generazione di eccezioni