Condividi tramite


Progettazione di eccezioni personalizzate

Le linee guida riportate di seguito contribuiscono a garantire la corretta progettazione di eccezioni personalizzate.

Evitare gerarchie di eccezioni eccessivamente articolate.

Per ulteriori informazioni, vedere Tipi e spazi dei nomi.

Derivare le eccezioni da System.Exception o da una delle altre eccezioni delle classi base.

Notare che nella sezione Rilevazione e generazione di tipi di eccezioni standard è inclusa una linea guida in cui si raccomanda di non derivare eccezioni personalizzate da ApplicationException.

Terminare i nomi delle classi di eccezioni con il suffisso Exception.

L'utilizzo di convenzioni di denominazione uniformi consente di ridurre la curva di apprendimento per le nuove librerie.

Rendere le eccezioni serializzabili. Per funzionare correttamente tra differenti domini applicazione e limiti della gestione remota, un'eccezione deve essere serializzabile.

Per informazioni su come rendere serializzabili i tipi, vedere Serialization.

Fornire (almeno) i seguenti costruttori comuni su tutte le eccezioni. Assicurarsi che i nomi e i tipi di parametro siano uguali a quelli utilizzati nell'esempio di codice riportato di seguito.

Public Class NewException
    Inherits BaseException
    Implements ISerializable

    Public Sub New()
        MyBase.New()
        ' Add implementation.
    End Sub

    Public Sub New(ByVal message As String)
        MyBase.New()
        ' Add implementation.
    End Sub

    Public Sub New(ByVal message As String, ByVal inner As Exception)
        MyBase.New()
        ' Add implementation.
    End Sub

    ' This constructor is needed for serialization.
    Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
        MyBase.New()
        ' Add implementation.
    End Sub
End Class
public class NewException : BaseException, ISerializable
{
    public NewException()
    {
        // Add implementation.
    }
    public NewException(string message)
    {
        // Add implementation.
    }
    public NewException(string message, Exception inner)
    {
        // Add implementation.
    }

    // This constructor is needed for serialization.
   protected NewException(SerializationInfo info, StreamingContext context)
   {
        // Add implementation.
   }
}
public ref class NewException : BaseException, ISerializable
{
public:
    NewException()
    {
        // Add implementation.
    }

    NewException(String^ message)
    {
        // Add implementation.
    }

    NewException(String^ message, Exception^ inner)
    {
        // Add implementation.
    }

protected:
    // This constructor is needed for serialization.
    NewException(SerializationInfo info, StreamingContext context)
    {
        // Add implementation.
    }
};

Segnalare informazioni riservate attraverso un override di System.Object.ToString solo dopo aver chiesto un'autorizzazione specifica. Se la richiesta di autorizzazione ha esito negativo, restituire una stringa che non includa le informazioni riservate.

Archiviare le informazioni riservate utili in stato di eccezione privata. Assicurarsi che le informazioni possano essere ricevute solo da codice attendibile.

Fornire eventualmente proprietà delle eccezioni per l'accesso a livello di codice a informazioni supplementari (oltre alla stringa del messaggio) relative all'eccezione.

Portions Copyright 2005 Microsoft Corporation. Tutti i diritti riservati.

Portions Copyright Addison-Wesley Corporation. Tutti i diritti riservati.

Per ulteriori informazioni sulle linee guida di progettazione, vedere “le linee guida di progettazione di Framework: Idiomi convenzioni, e modelli per libro raccolte riutilizzabili .NET„ di Krzysztof Cwalina e brad Abrams, emessi da Addison-Wesley, 2005.

Vedere anche

Concetti

Scelta del tipo corretto di eccezione da generare

Altre risorse

Linee guida di progettazione per lo sviluppo di librerie di classi

Linee guida di progettazione delle eccezioni