Gestione delle Eccezioni in C#

Il problema dei crash nei programmi

Uno degli eventi più fastidiosi quando utilizziamo un software è il crash improvviso, specialmente se questo comporta la perdita di dati non salvati.

Nei linguaggi come C, un semplice errore come un newline (\\n) mal gestito poteva causare un crash. In C#, invece, grazie alla presenza di un runtime, al tipo string e agli array dinamici, il rischio di crash per errori di memoria è notevolmente ridotto. Tuttavia, esistono ancora situazioni in cui un programma può andare in crash, per esempio:

Le eccezioni in C#

Per gestire queste situazioni, C# introduce il meccanismo delle eccezioni. Questo meccanismo permette al programma di non chiudersi immediatamente in caso di errore, ma di gestire il problema in modo controllato.

Cos'è un'eccezione?

Un'eccezione è una condizione di errore o un comportamento imprevisto che si verifica durante l'esecuzione di un programma. Quando un'eccezione si verifica, il runtime genera un messaggio di errore e avvia un processo chiamato stack unwinding per cercare un gestore dell'eccezione.

Come funziona il meccanismo delle eccezioni?

Quando il runtime rileva un'eccezione:

  1. Risale lo stack delle chiamate alla ricerca di un gestore dell'eccezione.
  2. Se trova un gestore, il flusso di esecuzione passa al blocco che gestisce l'errore.
  3. Se non trova un gestore, il programma termina mostrando un messaggio di errore.

Come scrivere codice sicuro con le eccezioni

Per rendere un'applicazione più sicura, dobbiamo gestire le eccezioni in modo appropriato. Anche se scriviamo codice corretto, potrebbero comunque verificarsi errori a causa di fattori esterni. Per questo motivo, in C# esistono i blocchi try-catch.