Visual Studio.NET e C#: come gestire le eccezioni e il numero di riga dell’errore

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