Categories: C# (sharp)

Gestione delle Eccezioni in C#

Quando si verifica un errore nel programma, si dice che viene sollevata un’eccezione. Nei linguaggi strutturati di solito viene ritornato un determinato valore per certe funzioni, quando si ha un errore. In C# al momento della generazione del problema viene creata una classe ad hoc, nella quale sono descritte tutte le informazioni sull’errore e la procedura che l’ha generato. Quando si richiama un blocco di codice che potrebbe sollevare un errore, come la gestione dei files o altre routines che operano su informazioni non concesse a tutti gli utenti del sistema, è possibile racchiuderlo in un’istruzione di controllo, per intercettare eventuali eccezioni sollevate da quel codice. Il linguaggio C# permette di organizzare le parti del codice suddividendole in tre sezioni distinte:

  • try – l’algoritmo
  • catch – la routine di controllo dell’errore
  • finally – il codice eseguito sempre

Facciamo un semplice esempio pratico:

using System;

public class Corso
{
     static void Main(string[] args)
     {
         int[] k = {10, 12, 34};

        try
        {
            for (int i = 0; i < 5; ++i)
                Console.WriteLine("In posizione {0} abbiamo {1}",
                     i + 1, k[i]);
         }
         catch (System.Exception e)
         {
              Console.WriteLine(e.Message + "\n\n");
         }
         finally
         {
             Console.WriteLine("Scusate, ho sbagliato...\n\n");
             for (int i = 0; i < k.Length; ++i)
                 Console.WriteLine("In posizione {0} abbiamo {1}",
                        i + 1, k[i]);
         }

         Console.ReadKey();
    }
}

Nel blocco try viene specificato il codice che dev’essere soggetto a controllo, che viene eseguito passo passo in modo controllato dall’ambiente runtime del .NET. Le eccezioni che si vogliono intercettare sono invece indicate in opporture istruzioni catch, ne esiste una per ogni errore da gestire. Se si desidera comprendere più errori in un determinato ordine, occorre inserire più istruzioni catch. L’errore dicevamo, viene intercettato e caricato in una classe System.Exception, che risulta essere la classe base di tutte le altre che si occupano della gestione degli errori di file, di operazioni matematiche, come la divisione per zero, e tante altre; per un elenco completo guardatevi l’aiuto in linea del framework .NET. Il blocco finally viene eseguito sempre, al termine delle istruzioni del blocco try. Quest’ultimo viene di solito utilizzato per rilasciare le risorse, come per esempio se in try viene inserita l’apertura di un file. Nella prossima lezione concluderemo la parte del corso dedicata alle eccezioni, vedendo come sollevarle tramite codice e come creare eccezioni personalizzate per il proprio applicativo.

<< Lezione Precedente – Inizio CorsoIndice LezioniLezione Successiva >>

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi

Recent Posts

MerciGest: il gestionale di magazzino semplice e gratuito

MerciGest è il software gestionale gratuito per Windows che semplifica la gestione del magazzino: giacenze,…

3 giorni ago

Software gestionali con SQL Server: un archivio unico, accessibile ovunque

Tutti i nostri software gestionali possono essere collegati a un database SQL Server, consentendo l’accesso…

4 giorni ago

Come iniziare ad usare MerciGest in 5 minuti

MerciGest è semplice e immediato: basta scaricare e installare il programma per iniziare subito. Al…

7 giorni ago

Cos’è MerciGest e a chi serve

MerciGest è un gestionale di magazzino per Windows pensato per negozi, piccole imprese e artigiani…

1 settimana ago

Introduzione alla Standard Template Library (STL)

La Standard Template Library (STL) è una delle componenti più potenti del C++. Fornisce una…

7 mesi ago

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

2 anni ago