Verwenden von Standardausnahmetypen

In diesem Abschnitt werden die vom Framework bereitgestellten Standardausnahmen und die Details ihrer Verwendung beschrieben. Die Liste ist nicht vollständig. Informationen zur Verwendung anderer Frameworkausnahmetypen finden .NET Framework Referenzdokumentation.

Ausnahme und SystemException

❌ NICHT auslösen oder System.ExceptionSystem.SystemException.

❌ FANGEN SIE ODER System.Exception NICHT System.SystemException im Frameworkcode ab, es sei denn, Sie möchten erneut ausführen.

❌ VERMEIDEN Sie das Abfangen System.ExceptionSystem.SystemExceptionvon oder , mit Ausnahme von Ausnahmehandlern der obersten Ebene.

ApplicationException

❌ NICHT auslösen oder von ableiten ApplicationException.

InvalidOperationException

✔️ DO löst eine aus InvalidOperationException , wenn sich das Objekt in einem ungeeigneten Zustand befindet.

ArgumentException, ArgumentNullException und ArgumentOutOfRangeException

✔️ DO löst oder ArgumentException einen seiner Untertypen aus, wenn fehlerhafte Argumente an einen Member übergeben werden. Bevorzugen Sie ggf. den am meisten abgeleiteten Ausnahmetyp.

✔️ LEGEN SIE die - ParamName Eigenschaft fest, wenn sie eine der Unterklassen von auslösen ArgumentException.

Diese Eigenschaft stellt den Namen des Parameters dar, durch den die Ausnahme ausgelöst wurde. Beachten Sie, dass die -Eigenschaft mithilfe einer der Konstruktorüberladungen festgelegt werden kann.

✔️ Verwenden Sie value do für den Namen des impliziten Wertparameters von Eigenschaftensettern.

NullReferenceException, IndexOutOfRangeException und AccessViolationException

❌ Lassen Sie nicht zu, dass öffentlich aufrufbare APIs explizit oder implizit NullReferenceException, AccessViolationExceptionoder auslösen IndexOutOfRangeException. Diese Ausnahmen sind reserviert und werden von der Ausführungs-Engine ausgelöst und weisen in den meisten Fällen auf einen Fehler hin.

Verwenden Sie die Argumentüberprüfung, um das Auslösen dieser Ausnahmen zu vermeiden. Das Auslösen dieser Ausnahmen macht Implementierungsdetails Ihrer Methode verfügbar, die sich im Laufe der Zeit ändern können.

StackOverflowException

❌ LÖST NICHT explizit aus StackOverflowException. Die Ausnahme sollte explizit nur von der CLR ausgelöst werden.

❌ FANGEN SIE NICHT ab StackOverflowException.

Es ist fast unmöglich, verwalteten Code zu schreiben, der bei willkürlichen Stapelüberläufen konsistent bleibt. Die nicht verwalteten Teile der CLR bleiben konsistent, indem Sie Mithilfe von Tests Stapelüberläufe an klar definierte Stellen verschieben, anstatt aus beliebigen Stapelüberläufen herauszusichern.

OutOfMemoryException

❌ LÖST NICHT explizit aus OutOfMemoryException. Diese Ausnahme wird nur von der CLR-Infrastruktur ausgelöst.

ComException, SEHException und ExecutionEngineException

❌LÖST NICHT explizit , COMExceptionExecutionEngineExceptionund ausSEHException. Diese Ausnahmen sollen nur von der CLR-Infrastruktur ausgelöst werden.

Teile ©2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

Nachdruck mit Genehmigung von Pearson Education, Inc aus 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 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Weitere Informationen