Używanie standardowych typów wyjątkówUsing Standard Exception Types

W tej sekcji opisano standardowe wyjątki udostępniane przez środowisko oraz szczegóły ich użycia.This section describes the standard exceptions provided by the Framework and the details of their usage. Lista nie jest kompletna.The list is by no means exhaustive. Zapoznaj się z dokumentacją dotyczącą .NET Framework, aby uzyskać informacje na temat użycia innych typów wyjątków struktury.Please refer to the .NET Framework reference documentation for usage of other Framework exception types.

Wyjątek i SystemExceptionException and SystemException

❌ nie Generuj System.Exception lub System.SystemException.❌ DO NOT throw System.Exception or System.SystemException.

❌ nie przechwycić System.Exception lub System.SystemException w kodzie struktury, chyba że zamierzasz ponownie zgłosić.❌ DO NOT catch System.Exception or System.SystemException in framework code, unless you intend to rethrow.

❌ unikać przechwytywania System.Exception lub System.SystemException, z wyjątkiem obsługi wyjątków najwyższego poziomu.❌ AVOID catching System.Exception or System.SystemException, except in top-level exception handlers.

ApplicationExceptionApplicationException

❌ nie zgłaszaj ani nie pochodzą z ApplicationException.❌ DO NOT throw or derive from ApplicationException.

InvalidOperationExceptionInvalidOperationException

✔️ zgłosić InvalidOperationException, jeśli obiekt jest w niewłaściwym stanie.✔️ DO throw an InvalidOperationException if the object is in an inappropriate state.

Argumentyexception, ArgumentNullException i wyjątku ArgumentOutOfRangeExceptionArgumentException, ArgumentNullException, and ArgumentOutOfRangeException

✔️ zgłosić ArgumentException lub jeden z jego podtypów, jeśli do elementu członkowskiego są przekazane złe argumenty.✔️ DO throw ArgumentException or one of its subtypes if bad arguments are passed to a member. Preferuj najbardziej pochodny typ wyjątku, jeśli ma zastosowanie.Prefer the most derived exception type, if applicable.

✔️ ustawia właściwość ParamName podczas zgłaszania jednej z podklas ArgumentException.✔️ DO set the ParamName property when throwing one of the subclasses of ArgumentException.

Ta właściwość reprezentuje nazwę parametru, który spowodował zgłoszenie wyjątku.This property represents the name of the parameter that caused the exception to be thrown. Należy pamiętać, że właściwość można ustawić przy użyciu jednego z przeciążeń konstruktora.Note that the property can be set using one of the constructor overloads.

✔️ używać value jako nazwy niejawnego parametru wartości metod ustawiających właściwości.✔️ DO use value for the name of the implicit value parameter of property setters.

NullReferenceException, IndexOutOfRangeException i AccessViolationExceptionNullReferenceException, IndexOutOfRangeException, and AccessViolationException

❌ nie umożliwiają publicznie wywoływanych interfejsów API jawnie lub niejawnie zgłosić NullReferenceException, AccessViolationExceptionlub IndexOutOfRangeException.❌ DO NOT allow publicly callable APIs to explicitly or implicitly throw NullReferenceException, AccessViolationException, or IndexOutOfRangeException. Te wyjątki są zastrzeżone i zgłaszane przez aparat wykonywania, a w większości przypadków wskazują usterkę.These exceptions are reserved and thrown by the execution engine and in most cases indicate a bug.

Wykonaj sprawdzanie argumentów, aby uniknąć zgłaszania tych wyjątków.Do argument checking to avoid throwing these exceptions. Zgłaszanie tych wyjątków ujawnia szczegóły implementacji metody, która może ulec zmianie w czasie.Throwing these exceptions exposes implementation details of your method that might change over time.

StackOverflowExceptionStackOverflowException

NIE należy jawnie zgłosić StackOverflowException❌.❌ DO NOT explicitly throw StackOverflowException. Wyjątek powinien być jawnie wygenerowany tylko przez środowisko CLR.The exception should be explicitly thrown only by the CLR.

NIE przechwytuje StackOverflowException❌.❌ DO NOT catch StackOverflowException.

Niemal niemożliwe jest zapisanie kodu zarządzanego, który pozostaje spójny w obecności dowolnego przepełnienia stosu.It is almost impossible to write managed code that remains consistent in the presence of arbitrary stack overflows. Niezarządzane części środowiska CLR pozostają spójne przy użyciu sond do przenoszenia nadprzepływów stosu do dobrze zdefiniowanych miejsc, a nie do tworzenia kopii zapasowych z dowolnego przepełnienia stosu.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

NIE należy jawnie zgłosić OutOfMemoryException❌.❌ DO NOT explicitly throw OutOfMemoryException. Ten wyjątek jest zgłaszany tylko przez infrastrukturę środowiska CLR.This exception is to be thrown only by the CLR infrastructure.

ComException, SEHException — i ExecutionEngineExceptionComException, SEHException, and ExecutionEngineException

❌ nie zgłaszaj jawnie COMException, ExecutionEngineExceptioni SEHException.❌ DO NOT explicitly throw COMException, ExecutionEngineException, and SEHException. Te wyjątki są zgłaszane tylko przez infrastrukturę środowiska CLR.These exceptions are to be thrown only by the CLR infrastructure.

Fragmenty © 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Ponownie Wydrukowano przez uprawnienie Pearson Education, Inc. z wytycznych dotyczących projektowania platformy: konwencje, idiomy i wzorce dla bibliotek .NET do wielokrotnego użytku, 2. wydanie przez Krzysztof Cwalina i Brad Abrams, opublikowane 22, 2008 przez Addison-Wesley Professional w ramach serii Microsoft Windows Development.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.

Zobacz takżeSee also