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.