Freigeben über


Entwerfen von benutzerdefinierten Ausnahmen

Aktualisiert: November 2007

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

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

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 im Buch "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" von Krzysztof Cwalina 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