Sdílet prostřednictvím


Hierarchie výjimek

Existují dva typy výjimek. Výjimky generované vykonávaným programem a výjimky generované modulem CLR (Common Language Runtime). Kromě toho je zde hierarchie výjimek, které mohou být vyvolány aplikací i modulem runtime.

Exception je základní třída pro výjimky. Několik tříd výjimek dědí přímo z Exception, včetně ApplicationException a SystemException. Tyto dvě třídy tvoří základ pro téměř všechny výjimky modulu runtime.

Většina výjimek, které jsou odvozeny přímo z Exception nepřidávají žádné funkce ke třídě Exception. Například heirarchie Třídy InvalidCastException je následující:

Object    Výjimka       SystemException          InvalidCastException

Modul runtime vyvolá odpovídající odvozenou třídu z SystemException, pokud dojde k chybám. Tyto chyby vyplývají ze selhání kontrol modulu runtime (například chyby s vazbou mimo pole) a může k nim dojít při provádění jakýchkoli metod. Pokud navrhujete aplikace, které vytvoří nové výjimky, měli byste odvodit tyto výjimky ze třídy Exception. Není vhodné zachytit SystemException, ani není dobrou programátorskou praxí vyvolat ve vaší aplikaci SystemException.

Nejzávažnější výjimky – ty, co jsou vyvolány modulem runtime nebo v neobnovitelných podmínkách – zahrnují ExecutionEngineException, StackOverflowException, a OutOfMemoryException.

Výjimky Interoperation jsou odvozeny od SystemException a jsou dále rozšířeny ExternalException. Například COMException je výjimka, která je vyvolána během operací InterOp modelů COM a je odvozena z ExternalException. Win32Exception a SEHException jsou také odvozeny z ExternalException.

Hierarchie výjimek modulu runtime

Modul runtime obsahuje základní sadu výjimek odvozených z SystemException, která je vyvolává při provádění jednotlivých instrukcí. Následující tabulka obsahuje hierarchický seznam standardních výjimek poskytovaných modulem runtime a podmínky, za kterých byste měli vytvářet odvozené třídy.

Typ výjimky

Základní typ

Popis

Příklad

Výjimka

Objekt

Základní třída pro všechny výjimky.

Žádné (použijte odvozenou třídu této výjimky).

SystemException

Výjimka

Základní třída pro všechny chyby generované modulem runtime.

Žádné (použijte odvozenou třídu této výjimky).

IndexOutOfRangeException

SystemException

Vyvolána modulem runtime pouze v případě, že je pole nesprávně indexováno.

Indexování pole mimo platný rozsah:

arr[arr.Length+1]

NullReferenceException

SystemException

Vyvolána modulem runtime pouze v případě, že je odkazováno na nulový objekt.

object o = null;

o.ToString();

AccessViolationException

SystemException

Vyvolána modulem runtime pouze v případě, že je přistupováno k neplatné paměti.

Vyvolá se v případě spolupráce s nespravovaným kódem nebo nebezpečným spravovaným kódem a když je použit neplatný ukazatel.

InvalidOperationException

SystemException

Vyvolánána metodami v neplatném stavu.

Volání Enumerator.GetNext() po odebrání Item ze zdrojové kolekce.

ArgumentException

SystemException

Základní třída pro všechny výjimky argumentů.

Žádné (použijte odvozenou třídu této výjimky).

ArgumentNullException

ArgumentException

Vyvolána metodami, které neumožňují argumentu mít hodnotu null.

String s = null;

"Calculate".IndexOf (s);

ArgumentOutOfRangeException

ArgumentException

Vyvolána metodami, které ověřují, zda jsou argumenty v daném rozsahu.

String s = "string";

s.Chars[9];

ExternalException

SystemException

Základní třída pro výjimky, které se vyskytují nebo jsou zaměřeny na prostředí mimo modul runtime.

Žádné (použijte odvozenou třídu této výjimky).

ComException

ExternalException

Výjimka obsahující informace modelu COM HRESULT.

Použito v modelu zprostředkovatele komunikace s objekty COM.

SEHException

ExternalException

Výjimka zapouzdřující strukturované informace zpracování výjimek typu Win32.

Používána v operacích nespravovaného kódu.

Viz také

Koncepty

Třída výjimek a vlastnosti

Doporučené postupy pro zpracování výjimek

Zpracování a vyvolání výjimek

Další zdroje

Základy zpracování výjimek