Sdílet prostřednictvím


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 SystemException

❌ Nevyhazujte System.Exception nebo System.SystemException.

❌ NEODCHYTÁVEJTE System.Exception ani System.SystemException v rámci kódu, pokud nemáte v úmyslu znovu vyhodit výjimku.

❌ VYHNĚTE se zachytávání System.Exception ani System.SystemException, pokud nejde o obslužné rutiny pro výjimky 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.

Nastavte vlastnost ParamName 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 jako název implicitního parametru hodnoty u setteru vlastnosti.

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

❌ NEHÁZEJTE VÝJIMKY EXPLICITNĚ StackOverflowException. Výjimka by měla být explicitně vyhozena pouze CLR.

❌ NEchytejte StackOverflowException.

Je téměř nemožné napsat spravovaný kód, který zůstává konzistentní při libovolných přetečeních zásobníku. Neřízené části CLR zůstávají konzistentní díky využití sond k přesunu přetečení zásobníku na dobře definovaná místa, namísto stahování z libovolných přetečení zásobníku.

OutOfMemoryException

❌ NEHÁZEJTE VÝJIMKY EXPLICITNĚ OutOfMemoryException. Tato výjimka je vyvolána pouze infrastrukturou CLR.

ComException, SEHException a ExecutionEngineException

❌ NEVYHAZUJTE explicitně COMException, ExecutionEngineException a SEHException. Tyto výjimky mají být vyvolávány pouze infrastrukturou CLR.

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

Přetištěno se svolením Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition od Krzysztofa Cwaliny a Brada Abramse, vydáno 22. října 2008 nakladatelstvím Addison-Wesley Professional jako součást série Microsoft Windows Development.

Viz také