La gestione delle eccezioni è fondamentale per prevenire il crash di un programma a causa di errori imprevisti, come problemi di risorse o condizioni inaspettate. In un programma, quando si verifica un'eccezione, il runtime esegue una serie di passaggi per cercare un gestore che possa gestirla. Se non trova alcun gestore, il programma va in crash e mostra una schermata di errore.
Un'eccezione è un oggetto che rappresenta un errore verificatosi durante l'esecuzione del programma. In C#, tutte le eccezioni derivano dalla classe base System.Exception. Le eccezioni contengono diverse informazioni utili per il debug e la gestione degli errori, tra cui:
Per gestire le eccezioni, in C# si utilizza una struttura composta da tre blocchi principali:
catch (ad esempio, DivideByZeroException).Un esempio di codice per la gestione delle eccezioni è il seguente:
try {
// Codice che potrebbe generare un'eccezione
int[] array = new int[5];
int x = array[10]; // Genera un'eccezione di indice fuori intervallo
} catch (IndexOutOfRangeException e) {
// Gestione dell'eccezione
Console.WriteLine("Errore: " + e.Message);
} finally {
// Codice che viene eseguito indipendentemente dall'eccezione
Console.WriteLine("Operazione conclusa");
}
Quando si verifica un'eccezione, il Common Language Runtime (CLR) risale lo stack delle chiamate alla ricerca di un blocco catch che possa gestirla. Se non viene trovato nessun blocco catch appropriato, il programma va in crash e vengono mostrate informazioni sull'errore (come una schermata di errore).
try, catch e finally