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.
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 (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