Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieser Inhalt wird mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines: Konventionen, Idiome und Muster für wiederverwendbare .NET-Bibliotheken, 2. Auflage nachgedruckt. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.
In diesem Abschnitt werden die vom Framework bereitgestellten Standard exceptions und die Details ihrer Verwendung beschrieben. Die Liste ist nicht vollständig. Weitere Informationen zur Verwendung anderer Framework-Ausnahmetypen finden Sie in der .NET Framework-Referenzdokumentation.
Ausnahme und SystemException
❌ System.Exception oder System.SystemException NICHT auslösen.
❌NICHT abfangenSystem.Exception
oder System.SystemException
in Frameworkcode, es sei denn, Sie beabsichtigen ein erneutes Auslösen.
❌ Abfangen von System.Exception
oder System.SystemException
VERMEIDEN, außer in Ausnahmehandlern auf oberster Ebene.
ApplicationException
❌ NICHT auslösen oder ableiten von ApplicationException.
InvalidOperationException
✔️ Werfen Sie eine InvalidOperationException, wenn sich das Objekt in einem unangemessenen Zustand befindet.
ArgumentException, ArgumentNullException und ArgumentOutOfRangeException
✔️ ArgumentException oder einen der Untertypen AUSLÖSEN, wenn ungültige Argumente an einen Member übergeben werden. Bevorzugen Sie im Bedarfsfall den am meisten abgeleiteten Ausnahmetyp.
✔️ Setzen Sie die ParamName
-Eigenschaft fest, wenn Sie eine der Unterklassen von ArgumentException
werfen.
Diese Eigenschaft stellt den Namen des Parameters dar, der dazu führte, dass die Ausnahme ausgelöst wurde. Beachten Sie, dass die Eigenschaft mithilfe einer der Konstruktorüberladungen festgelegt werden kann.
✔️ Verwenden Sie value
für den Namen des impliziten Wertparameters von Eigenschaftensetzern.
NullReferenceException, IndexOutOfRangeException und AccessViolationException
❌ NICHT zulassen, dass öffentlich aufrufbare APIs NullReferenceException, AccessViolationException oder IndexOutOfRangeException explizit oder implizit auslösen. Diese Ausnahmen werden vom Ausführungsmodul reserviert und ausgelöst und weisen in den meisten Fällen auf einen Fehler hin.
Führen Sie die Argumentüberprüfung aus, um das Auslösen dieser Ausnahmen zu vermeiden. Wenn Sie diese Ausnahmen auslösen, werden Implementierungsdetails Ihrer Methode verfügbar gemacht, die sich im Laufe der Zeit ändern können.
StackOverflowException
❌ NICHT explizit auslösen StackOverflowException. Die Ausnahme darf explizit nur von der CLR ausgelöst werden.
❌
StackOverflowException
NICHT abfangen.
Es ist fast unmöglich, verwalteten Code zu schreiben, der bei beliebigen Stapelüberläufen konsistent bleibt. Die nicht verwalteten Teile der CLR bleiben konsistent, indem Tests mithilfe von Tests Stapelüberläufe an klar definierte Stellen verschoben werden, anstatt sich aus beliebigen Stapelüberläufen zurückzuziehen.
OutOfMemoryException
❌ NICHT explizit auslösen OutOfMemoryException. Diese Ausnahme wird nur von der CLR-Infrastruktur ausgelöst.
ComException, SEHException und ExecutionEngineException
❌ Werfen Sie COMException, ExecutionEngineException und SEHException nicht explizit. Diese Ausnahmen dürfen nur von der CLR-Infrastruktur ausgelöst werden.
© Teile 2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.
Nachdruck mit freundlicher Genehmigung von Pearson Education, Inc., aus dem Buch Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 von Addison-Wesley Professional als Teil der Microsoft Windows Development Series.