Come catturare eccezioni multiple in un sol colpo in C#

di Lorenzo Neri
0 commento 73 visualizzazioni

Vorresti provare a vedere come catturare eccezioni multiple in un sol colpo in C#? È quello di cui parlo in questo articolo!

Di solito se vuoi catturare eccezioni multiple in C#, significa che sei cosciente di tutte le possibili eccezioni che si possono generare nella tua porzione di codice.

Di fatto, se non sai al 100% quali eccezioni si possono generare, non è affatto saggio ricorrere a questa strategia.

Facciamo un esempio diretto e semplice:

try
{
    WebId = new Guid(stringa["IDWEB"]);
}
catch (FormatException)
{
    WebId = Guid.Empty;
}
catch (OverflowException)
{
    WebId = Guid.Empty;
}

E nel caso te lo stessi chiedendo, funziona. C’è un ma!

È possibile scrivere tutto questo in modalità più semplice e concisa?

Dobbiamo usare l’eccezione generica di C#.

System.Exception: come funziona

System.Exception raccoglie pressoché tutti le tipologie di eccezione legate alla classe System.

Però noi sappiamo bene di volere un particolare tipo di eccezione fra tutti quelli che possiamo generare.

Come fare allora partendo da questa base?

Possiamo eseguire un controllo sul tipo 😀

Riprendendo l’esempio precedente, possiamo trasformare il catch come segue:

catch (Exception ex)            
{                
    if (ex is FormatException || ex is OverflowException)
    {
        WebId = Guid.Empty;
        Console.WriteLine("Eccezione generata");
        return;
    }

   throw;
}

Cosa abbiamo fatto qui?

Abbiamo generato un’eccezione totalmente generica.

Ma come dicevo prima, siam ben coscienti di tutti i tipi possibili di eccezioni che possano essere generate dal nostro codice no?

Benissimo.

Nell'”if” all’interno del catch, avrai notato che eseguo un controllo sul tipo.

Messo tutto in “OR”.

Questo, serve a capire non solo di che tipo sia l’eccezione, ma anche ad assicurarsi che il codice non vada in errore.

Questo, perché se non mettiamo nero su bianco qualsiasi tipo di eccezione generata, il codice non funzionerà quando ci troviamo un’eccezione che non rientra fra quelle elencate.

In altre parole, abbiamo realizzato un modo per catturare eccezioni multiple in un sol colpo con C# 😀

Prima che tu vada via e se volessi approfondire la tematica del debug, non posso che suggerirti di dare una lettura approfondita al mio articolo sulle tecniche di debug.

Scoprirai non solo quali esistono, ma anche come usarle all’interno del tuo codice.

Ti basta un click qui per scoprirlo 🙂

Potrebbero interessarti

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più