Freigeben über


Entwerfen von benutzerdefinierten Ausnahmen

Anhand der folgenden Richtlinien können Sie den ordnungsgemäßen Entwurf von benutzerdefinierten Ausnahmen sicherstellen.

Vermeiden Sie tiefe Ausnahmehierarchien.

Weitere Informationen finden Sie unter Typen und Namespaces.

Leiten Sie Ausnahmen von System.Exception oder einer der anderen allgemeinen Basisausnahmen ab.

Beachten Sie, dass Abfangen und Auslösen von Standardausnahmetypen eine Richtlinie enthält, die bestimmt, dass benutzerdefinierte Ausnahmen nicht von ApplicationException abgeleitet werden sollen.

Beenden Sie Ausnahmeklassennamen mit dem Suffix Exception.

Mit konsistenten Benennungskonventionen werden Benutzer schneller mit neuen Bibliotheken vertraut.

Legen Sie Ausnahmen als serialisierbar fest. Eine Ausnahme muss serialisierbar sein, damit sie anwendungsdomänen- und remotegrenzenübergreifend ordnungsgemäß ausgeführt werden kann.

Informationen über das Festlegen eines Typs als serialisierbar finden Sie unter Serialization.

Stellen Sie (mindestens) die folgenden allgemeinen Konstruktoren für alle Ausnahmen bereit. Die Namen und Typen der Parameter müssen mit den Namen und Typen im folgenden Codebeispiel übereinstimmen.

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.
    }
};

Melden Sie sicherheitsrelevante Informationen über eine Überschreibung von System.Object.ToString nur, nachdem eine entsprechende Berechtigung angefordert wurde. Wenn die Berechtigungsanforderung fehlschlägt, geben Sie eine Zeichenfolge zurück, die die sicherheitsrelevanten Informationen nicht enthält.

Speichern Sie nützliche sicherheitsrelevante Informationen in einem privaten Ausnahmezustand. Stellen Sie sicher, dass nur vertrauenswürdiger Code die Informationen abrufen kann.

Sie können Ausnahmeeigenschaften für den programmgesteuerten Zugriff auf zusätzliche Informationen (außer der Meldungszeichenfolge) bereitstellen, die für die Ausnahme relevant sind.

Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.

Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.

Weitere Informationen zu Entwurfsrichtlinien finden Sie unter „Framework-Entwurfs-Richtlinien: Idiome, Konventionen und Muster für wiederverwendbare .NET-Bibliotheken von Krzysztof Cwalina“ book und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.

Siehe auch

Konzepte

Auswählen des richtigen Typs der auszulösenden Ausnahme

Weitere Ressourcen

Entwurfsrichtlinien zum Entwickeln von Klassenbibliotheken

Entwurfsrichtlinien für Ausnahmen