🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Eccezioni in C#

Codegrind Team•Jul 22 2023

Le eccezioni sono situazioni anomale o errori che si verificano durante l’esecuzione di un programma. La gestione delle eccezioni consente di gestire questi errori in modo controllato e di garantire che l’applicazione continui a funzionare in modo adeguato anche in caso di problemi. In questa lezione, esploreremo in dettaglio cos’è un’eccezione, come gestirla e come utilizzare la gestione delle eccezioni in C#.

Concetto di Eccezione

Un’eccezione è un’istanza di una classe che rappresenta un errore o un’evenienza anomala durante l’esecuzione del programma. Le eccezioni possono verificarsi per diverse ragioni, come divisioni per zero, accesso a un indice non valido in un array o errori di lettura/scrittura su file.

Sollevamento di Eccezioni

Per sollevare un’eccezione in C#, possiamo utilizzare la parola chiave throw.

Esempio di Sollevamento di Eccezione:

if (denominatore == 0)
{
    throw new DivideByZeroException("Divisione per zero non consentita.");
}

Gestione delle Eccezioni

Per gestire le eccezioni e prevenire il crash dell’applicazione, possiamo utilizzare costrutti try-catch.

Esempio di Gestione delle Eccezioni:

try
{
    int risultato = numeratore / denominatore;
    Console.WriteLine($"Risultato: {risultato}");
}
catch (DivideByZeroException ex)
{
    Console.WriteLine($"Errore: {ex.Message}");
}

Blocco finally

Il blocco finally viene eseguito sempre, indipendentemente dal fatto che si sia verificata un’eccezione o meno.

Esempio di Utilizzo del Blocco finally:

try
{
    // Codice che potrebbe generare un'eccezione
}
catch (Exception ex)
{
    // Gestione dell'eccezione
}
finally
{
    // Codice eseguito sempre
}

Gestione Multipla di Eccezioni

È possibile catturare eccezioni di tipi diversi in blocchi catch separati.

Esempio di Gestione Multipla di Eccezioni:

try
{
    // Codice che potrebbe generare un'eccezione
}
catch (DivideByZeroException ex)
{
    // Gestione divisione per zero
}
catch (IOException ex)
{
    // Gestione errori di lettura/scrittura su file
}

Lancio di Eccezioni Personalizzate

È possibile creare eccezioni personalizzate derivando dalla classe Exception.

Esempio di Lancio di Eccezione Personalizzata:

class ValoreTroppoGrandeException : Exception
{
    public ValoreTroppoGrandeException(string message) : base(message) { }
}

// ...

if (valore > 100)
{
    throw new ValoreTroppoGrandeException("Il valore è troppo grande.");
}

Vantaggi della Gestione delle Eccezioni

La gestione delle eccezioni consente di:

  • Mantenere il controllo dell’applicazione anche in caso di errori.
  • Fornire un feedback all’utente in caso di errori.
  • Registrare informazioni utili sulle eccezioni per scopi di debugging.

Conclusione

La gestione delle eccezioni è un aspetto fondamentale nella scrittura di applicazioni robuste e affidabili in C#. Consente di gestire errori in modo controllato, evitando crash improvvisi e fornendo un feedback appropriato agli utenti. Utilizzando costrutti try-catch e creando eccezioni personalizzate, è possibile creare applicazioni piÚ stabili e facili da mantenere.