Procedura: creare 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 di 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 Exception.

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.

NotaNota

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 (il destinatario della chiamata) 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 una nuova classe di eccezioni, EmployeeListNotFoundException, viene derivata da Exception. Nella classe vengono definiti tre costruttori, ciascuno dei quali accetta parametri differenti.

Esempio

Imports System

Public Class EmployeeListNotFoundException
    Inherits Exception

    Public Sub New()
    End Sub

    Public Sub New(message As String)
        MyBase.New(message)
    End Sub

    Public Sub New(message As String, inner As Exception)
        MyBase.New(message, inner)
    End Sub
End Class
using System;

public class EmployeeListNotFoundException: Exception
{
    public EmployeeListNotFoundException()
    {
    }

    public EmployeeListNotFoundException(string message)
        : base(message)
    {
    }

    public EmployeeListNotFoundException(string message, Exception inner)
        : base(message, inner)
    {
    }
}
using namespace System;

public ref class EmployeeListNotFoundException : Exception
{
public:
    EmployeeListNotFoundException()
    {
    }

    EmployeeListNotFoundException(String^ message)
        : Exception(message)
    {
    }

    EmployeeListNotFoundException(String^ message, Exception^ inner)
        : Exception(message, inner)
    {
    }
};

Vedere anche

Attività

Procedura: utilizzare il blocco try/catch per l'intercettazione di eccezioni

Procedura: utilizzare eccezioni specifiche in un blocco catch

Concetti

Suggerimenti per gestire le eccezioni

Altre risorse

Nozioni fondamentali sulla gestione delle eccezioni