Utilizzo di eccezioni definite dall'utente

Se si desidera che gli utenti possano distinguere durante l'esecuzione del programma tra alcune condizioni di errore, sarà possibile creare personalmente eccezioni definite dall'utente. In .NET Framework viene fornita una gerarchia di classi di eccezione derivate, direttamente o indirettamente, dalla classe base Exception. Ciascuna di queste classi definisce un'eccezione specifica, pertanto in molti casi occorre unicamente intercettare l'eccezione. È inoltre possibile creare classi di eccezione personalizzate derivandole dalla classe ApplicationException.

Quando si creano eccezioni personalizzate è buona norma, nella scrittura del codice, che il nome di classe dell'eccezione definita dall'utente termini con la parola "Exception". È inoltre opportuno implementare i tre costruttori comuni consigliati, come illustrato nell'esempio che segue.

Nota   Nelle situazioni in cui si fa uso di risorse remote, è necessario garantire che i metadati relativi alle eccezioni definite dall'utente siano disponibili sia al server (chiamato) che al client (l'oggetto proxy o chiamante). È ad esempio necessario che il codice che consente di chiamare un metodo in un dominio applicazione separato sia in grado di individuare l'assembly contenente un'eccezione generata da una chiamata remota. Per ulteriori informazioni, vedere Suggerimenti per gestire le eccezioni.

Nell'esempio riportato di seguito viene derivata una nuova classe di eccezioni, EmployeeListNotFoundException, da System.ApplicationException. Nella classe vengono definiti tre costruttori, ciascuno dei quali accetta parametri differenti.

Imports System
Public Class EmployeeListNotFoundException
   Inherits ApplicationException
   
   Public Sub New()
   End Sub 'New
   
   Public Sub New(message As String)
      MyBase.New(message)
   End Sub 'New
   
   Public Sub New(message As String, inner As Exception)
      MyBase.New(message, inner)
   End Sub 'New
End Class 'EmployeeListNotFoundException
[C#]
using System;
public class EmployeeListNotFoundException: ApplicationException
{
   public EmployeeListNotFoundException()
      {
      }
   public EmployeeListNotFoundException(string message)
      : base(message)
      {
      }
   public EmployeeListNotFoundException(string message, Exception inner)
      : base(message, inner)
      {
      }
}

Vedere anche

Utilizzo del blocco try/catch per l'intercettazione delle eccezioni | Utilizzo di eccezioni specifiche in un blocco catch | Suggerimenti per gestire le eccezioni | Nozioni fondamentali sulla gestione delle eccezioni