Verwenden von StandardausnahmetypenUsing Standard Exception Types

In diesem Abschnitt werden die Standard Ausnahmen, die vom Framework bereitgestellt werden, und die Details ihrer Verwendung beschrieben.This section describes the standard exceptions provided by the Framework and the details of their usage. Die Liste ist keineswegs vollständig.The list is by no means exhaustive. Weitere Informationen zur Verwendung von frameworkausnahmetypen finden Sie in der .NET Framework Referenz Dokumentation.Please refer to the .NET Framework reference documentation for usage of other Framework exception types.

Exception und SystemExceptionException and SystemException

❌ Lösen Sie nicht System.Exception oder aus System.SystemException .❌ DO NOT throw System.Exception or System.SystemException.

❌ Fangen System.Exception Sie oder nicht System.SystemException im Frameworkcode ab, es sei denn, Sie möchten erneut auslösen.❌ DO NOT catch System.Exception or System.SystemException in framework code, unless you intend to rethrow.

❌ Vermeiden Sie das Abfangen von System.Exception oder System.SystemException , außer in Ausnahme Handlern der obersten Ebene.❌ AVOID catching System.Exception or System.SystemException, except in top-level exception handlers.

ApplicationExceptionApplicationException

❌ Lösen Sie nicht aus oder leiten Sie von ab ApplicationException .❌ DO NOT throw or derive from ApplicationException.

InvalidOperationExceptionInvalidOperationException

✔️ lösen eine InvalidOperationException aus, wenn sich das Objekt in einem unzulässigen Zustand befindet.✔️ DO throw an InvalidOperationException if the object is in an inappropriate state.

Argumumtexception, ArgumentNullException und argumentoudefrangeexceptionArgumentException, ArgumentNullException, and ArgumentOutOfRangeException

✔️ Throw ArgumentException oder einen seiner Untertypen aus, wenn ungültige Argumente an einen Member übergeben werden.✔️ DO throw ArgumentException or one of its subtypes if bad arguments are passed to a member. Bevorzugen Sie ggf. den am weitesten abgeleiteten Ausnahmetyp.Prefer the most derived exception type, if applicable.

✔️ die-Eigenschaft festlegen, ParamName Wenn eine der Unterklassen von ausgelöst wird ArgumentException .✔️ DO set the ParamName property when throwing one of the subclasses of ArgumentException.

Diese Eigenschaft stellt den Namen des Parameters dar, der bewirkt hat, dass die Ausnahme ausgelöst wurde.This property represents the name of the parameter that caused the exception to be thrown. Beachten Sie, dass die-Eigenschaft mit einer der-Konstruktorüberladungen festgelegt werden kann.Note that the property can be set using one of the constructor overloads.

✔️ Verwenden Sie value für den Namen des impliziten value-Parameters von Eigenschaften Settern.✔️ DO use value for the name of the implicit value parameter of property setters.

NullReferenceException, indexouesfrangeexception und AccessViolationExceptionNullReferenceException, IndexOutOfRangeException, and AccessViolationException

❌ Lassen Sie nicht zu, dass öffentlich Aufruf Bare APIs, oder explizit oder implizit auslösen NullReferenceException AccessViolationException IndexOutOfRangeException .❌ DO NOT allow publicly callable APIs to explicitly or implicitly throw NullReferenceException, AccessViolationException, or IndexOutOfRangeException. Diese Ausnahmen sind von der Ausführungs-Engine reserviert und werden ausgelöst und weisen in den meisten Fällen auf einen Fehler hin.These exceptions are reserved and thrown by the execution engine and in most cases indicate a bug.

Argument Überprüfung, um das Auslösen dieser Ausnahmen zu vermeiden.Do argument checking to avoid throwing these exceptions. Wenn Sie diese Ausnahmen auslösen, werden Implementierungsdetails der Methode angezeigt, die sich im Laufe der Zeit ändern können.Throwing these exceptions exposes implementation details of your method that might change over time.

StackOverflowExceptionStackOverflowException

❌ Nicht explizit auslösen StackOverflowException .❌ DO NOT explicitly throw StackOverflowException. Die Ausnahme sollte explizit nur durch die CLR ausgelöst werden.The exception should be explicitly thrown only by the CLR.

❌ Nicht abfangen StackOverflowException .❌ DO NOT catch StackOverflowException.

Es ist beinahe unmöglich, verwalteten Code zu schreiben, der bei der Anwesenheit beliebiger Stapel Überläufe konsistent bleibt.It is almost impossible to write managed code that remains consistent in the presence of arbitrary stack overflows. Die nicht verwalteten Teile der CLR bleiben konsistent, indem Sie die Stapel Überläufe mithilfe von Tests an klar definierte Orte verschieben, anstatt Sie aus willkürlichen Stapel Überläufen zu sichern.The unmanaged parts of the CLR remain consistent by using probes to move stack overflows to well-defined places rather than by backing out from arbitrary stack overflows.

OutOfMemoryExceptionOutOfMemoryException

❌ Nicht explizit auslösen OutOfMemoryException .❌ DO NOT explicitly throw OutOfMemoryException. Diese Ausnahme wird nur durch die CLR-Infrastruktur ausgelöst.This exception is to be thrown only by the CLR infrastructure.

COMException, Seh Exception und ExecutionEngineExceptionComException, SEHException, and ExecutionEngineException

❌ Lösen Sie, und nicht explizit aus COMException ExecutionEngineException SEHException .❌ DO NOT explicitly throw COMException, ExecutionEngineException, and SEHException. Diese Ausnahmen müssen nur von der CLR-Infrastruktur ausgelöst werden.These exceptions are to be thrown only by the CLR infrastructure.

Teile © 2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

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.Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

Weitere InformationenSee also