Použití standardních typů výjimek

Poznámka:

Tento obsah je znovu vytištěn oprávněním Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms a Patterns for Reusable .NET Libraries, 2. vydání. Tato edice byla publikována v roce 2008 a kniha byla od té doby plně upravena ve třetím vydání. Některé informace na této stránce můžou být zastaralé.

Tato část popisuje standardní výjimky poskytované architekturou a podrobnosti o jejich použití. Seznam není vyčerpávající. Informace o použití jiných typů výjimek rozhraní Framework najdete v referenční dokumentaci k rozhraní .NET Framework.

Výjimka a výjimka SystemException

❌ NEhodit System.Exception nebo System.SystemException.

❌ DO NOT catch System.Exception or System.SystemException in framework code, pokud nemáte v úmyslu znovu narůstání.

❌ VYHNĚTE se zachytávání System.Exception nebo System.SystemException, s výjimkou obslužných rutin výjimek nejvyšší úrovně.

Applicationexception

❌ NEPOUŽÍVEJTE vyvolání nebo odvozování z ApplicationException.

InvalidOperationException

✔️ Vyvolejte výjimku InvalidOperationException , pokud je objekt v nevhodném stavu.

ArgumentException, ArgumentNullException a ArgumentOutOfRangeException

✔️ Vyvolání ArgumentException nebo jednoho z jeho podtypů, pokud jsou členům předány chybné argumenty. Pokud je to možné, upřednostněte nejvýraznější typ výjimky.

✔️ Do nastavit ParamName vlastnost při vyvolání jedné z podtříd .ArgumentException

Tato vlastnost představuje název parametru, který způsobil výjimku vyvolání. Všimněte si, že vlastnost lze nastavit pomocí jednoho z přetížení konstruktoru.

✔️ POUŽIJTE value pro název implicitního parametru hodnoty setter vlastností.

NullReferenceException, IndexOutOfRangeException a AccessViolationException

❌ NEPOVOLOVAT veřejně volatelná rozhraní API explicitně nebo implicitně vyvolat NullReferenceException, AccessViolationExceptionnebo IndexOutOfRangeException. Tyto výjimky jsou rezervované a vyvolány prováděcím modulem a ve většině případů značí chybu.

Proveďte kontrolu argumentů, abyste se vyhnuli vyvolání těchto výjimek. Vyvolání těchto výjimek zveřejňuje podrobnosti implementace vaší metody, které se můžou v průběhu času měnit.

Stackoverflowexception

❌ DO NOT explicitní vyvolání StackOverflowException. Výjimka by měla být explicitně vyvolán pouze clr.

❌ NEchytejte StackOverflowException.

Je téměř nemožné napsat spravovaný kód, který zůstává konzistentní v přítomnosti libovolných přetečení zásobníku. Nespravované části CLR zůstávají konzistentní pomocí sond k přesunu přetečení zásobníku na dobře definovaná místa, a ne pomocí přetečení libovolného zásobníku.

Outofmemoryexception

❌ DO NOT explicitní vyvolání OutOfMemoryException. Tato výjimka je vyvolán pouze infrastrukturou CLR.

ComException, SEHException a ExecutionEngineException

❌ NEPOUŽÍVEJTE explicitně házet COMException, ExecutionEngineExceptiona SEHException. Tyto výjimky jsou vyvolány pouze infrastrukturou CLR.

© Části 2005, 2009 Microsoft Corporation. Všechna práva vyhrazena.

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 v rámci Microsoft Windows Development Series.

Viz také