Verwenden von StandardausnahmetypenUsing Standard Exception Types

Dieser Abschnitt beschreibt die Standardausnahmen, die durch das Framework sowie Details zu ihrer Verwendung bereitgestellt.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. Finden Sie in der .NET Framework-Referenzdokumentation für die Verwendung mit anderen Framework-Ausnahmetypen.Please refer to the .NET Framework reference documentation for usage of other Framework exception types.

Ausnahmen und SystemExceptionException and SystemException

X DO NOT auslösen System.Exception oder System.SystemException.X DO NOT throw System.Exception or System.SystemException.

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

X AVOID abfangen System.Exception oder System.SystemException, außer bei Ausnahmehandler der obersten Ebene.X AVOID catching System.Exception or System.SystemException, except in top-level exception handlers.

ApplicationExceptionApplicationException

X DO NOT lösen oder eine Ableitung von ApplicationException.X DO NOT throw or derive from ApplicationException.

InvalidOperationExceptionInvalidOperationException

✓ DO Auslösen einer InvalidOperationException , wenn das Objekt in einem unzulässigen Zustand ist.✓ DO throw an InvalidOperationException if the object is in an inappropriate state.

ArgumentException "ArgumentNullException" und ArgumentOutOfRangeExceptionArgumentException, ArgumentNullException, and ArgumentOutOfRangeException

✓ DO auslösen ArgumentException oder einem seiner Untertypen, wenn ungültige Argumente auf einen Member übergeben werden.✓ DO throw ArgumentException or one of its subtypes if bad arguments are passed to a member. Bevorzugen Sie am weitesten abgeleiteten Ausnahmetyp, falls zutreffend.Prefer the most derived exception type, if applicable.

✓ DO legen Sie die ParamName Eigenschaft, die beim Auslösen einer die Unterklasse von ArgumentException.✓ DO set the ParamName property when throwing one of the subclasses of ArgumentException.

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

✓ DO verwenden value für den Namen des Parameters impliziter Wert der Eigenschaftensetter.✓ DO use value for the name of the implicit value parameter of property setters.

"NullReferenceException" IndexOutOfRangeException und AccessViolationExceptionNullReferenceException, IndexOutOfRangeException, and AccessViolationException

X DO NOT ermöglichen öffentlich aufrufbare APIs explizit oder implizit auslöst NullReferenceException, AccessViolationException, oder IndexOutOfRangeException.X DO NOT allow publicly callable APIs to explicitly or implicitly throw NullReferenceException, AccessViolationException, or IndexOutOfRangeException. Diese Ausnahmen sind reserviert und wird von der ausführungs-Engine ausgelöst und in den meisten Fällen einen Fehler hinweisen.These exceptions are reserved and thrown by the execution engine and in most cases indicate a bug.

Führen Sie Argument überprüfen, um zu vermeiden, diese Ausnahmen auslösen.Do argument checking to avoid throwing these exceptions. Diese Ausnahmen auslösen, stellt Details zur Implementierung der Methode, die sich im Laufe der Zeit ändern kann.Throwing these exceptions exposes implementation details of your method that might change over time.

StackOverflowExceptionStackOverflowException

X DO NOT explizit auslösen StackOverflowException.X DO NOT explicitly throw StackOverflowException. Die Ausnahme sollte nur von der CLR explizit ausgelöst werden.The exception should be explicitly thrown only by the CLR.

X DO NOT catch StackOverflowException.X DO NOT catch StackOverflowException.

Es ist nahezu unmöglich, verwalteten Code schreiben, der bei beliebigen Stapelüberläufe konsistent bleibt.It is almost impossible to write managed code that remains consistent in the presence of arbitrary stack overflows. Mithilfe von Tests um zu verschieben, dass klar definierte stellen Stapelüberläufe anstatt aus beliebigen Stapelüberläufe zurückziehen, wird von die nicht verwalteten Teilen der CLR konsistent bleiben.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

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

ComException, ExecutionEngineException und SEHException-AusnahmeComException, SEHException, and ExecutionEngineException

X DO NOT explizit auslösen COMException, ExecutionEngineException, und SEHException.X DO NOT explicitly throw COMException, ExecutionEngineException, and SEHException. Diese Ausnahmen werden nur von der CLR-Infrastruktur ausgelöst wird.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.

Pearson Education, Inc. über Rechte vorbehalten Framework-Entwurfsrichtlinien vorgestellt: Aufrufkonventionen, Ausdrücke und Muster für die Wiederverwendbare Bibliotheken für .NET, 2. Auflage Krzysztof Cwalina und Brad Abrams, 22. Oktober 2008 von Addison-Wesley Professional als Teil der Microsoft Windows Development-Reihe veröffentlicht.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.

Siehe auchSee also