Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace musí být schopny zpracovávat chyby, ke kterým dochází během provádění konzistentně. .NET poskytuje model pro upozorňování aplikací na chyby jednotným způsobem: operace .NET indikují selhání vyvoláním výjimek.
Výjimky
Výjimkou je jakýkoli chybový stav nebo neočekávané chování, ke kterému dochází spuštěným programem. Výjimky můžou být vyvolány z důvodu chyby v kódu nebo v kódu, který voláte (například sdílenou knihovnu), nedostupných prostředků operačního systému, neočekávaných podmínek, se kterými modul runtime narazí (například kód, který nelze ověřit) atd. Vaše aplikace se může zotavit z některých z těchto podmínek, ale ne z jiných. I když se můžete zotavit z většiny výjimek aplikace, nemůžete provést obnovení z většiny výjimek modulu runtime.
V .NET je výjimka objekt, který dědí z System.Exception třídy. Vytvoří se výjimka v části kódu, kde došlo k problému. Výjimka se přenáší nahoru po zásobníku, dokud ji aplikace nezpracuje nebo program neukončí.
Výjimky vs. tradiční metody zpracování chyb
Model zpracování chyb jazyka tradičně závisel na jedinečném způsobu zjišťování chyb a lokalizaci obslužných rutin jazyka nebo na mechanismu zpracování chyb poskytovaných operačním systémem. Způsob, jakým .NET implementuje zpracování výjimek, poskytuje následující výhody:
Vyvolávání a zpracování výjimek je stejné ve všech programovacích jazycích .NET.
Nevyžaduje pro zpracování výjimek žádnou konkrétní syntaxi jazyka, ale umožňuje každému jazyku definovat vlastní syntaxi.
Výjimky můžou být vyvolány napříč procesem a dokonce i hranicemi počítačů.
Kód zpracování výjimek lze přidat do aplikace, aby se zvýšila spolehlivost programu.
Výjimky nabízejí výhody oproti jiným metodám oznámení o chybách, jako jsou návratové kódy. Selhání nezůstanou bez povšimnutí, protože pokud dojde k vyvolání výjimky a nezpracujete ji, prostředí runtime ukončí vaši aplikaci. Neplatné hodnoty se v systému dál nešířují v důsledku kódu, který nezkontroluje návratový kód selhání.
Běžné výjimky
V následující tabulce jsou uvedeny některé běžné výjimky s příklady toho, co je může způsobit.
Typ výjimky | Popis | Příklad |
---|---|---|
Exception | Základní třída pro všechny výjimky. | Žádná (použijte odvozenou třídu této výjimky). |
IndexOutOfRangeException | Vyvoláno modulem runtime pouze v případech, kdy je pole indexováno nesprávně. | Indexování pole mimo platný rozsah: arr[arr.Length+1] |
NullReferenceException | Vyvolá se modulem runtime pouze v případech, kdy je odkazován na objekt null. | object o = null; o.ToString(); |
InvalidOperationException | Je vyhazován metodami ve neplatném stavu. | Volání Enumerator.MoveNext() po odebrání položky z podkladové kolekce |
ArgumentException | Základní třída pro všechny výjimky argumentu | Žádná (použijte odvozenou třídu této výjimky). |
ArgumentNullException | Vyvolán metodami, které neumožňují, aby argument byl null. | String s = null; "Calculate".IndexOf(s); |
ArgumentOutOfRangeException | Vyvolán metodami, které ověřují, že argumenty jsou v dané oblasti. | String s = "string"; s.Substring(s.Length+1); |
Viz také
- Třída a vlastnosti výjimky
- Postupy: Použití bloku Try-Catch k zachycení výjimek
- Postupy: Použití konkrétních výjimek v bloku catch
- Postupy: Explicitní vyvolání výjimek
- Postupy: Vytváření výjimek User-Defined
- Použití obslužných rutin výjimek User-Filtered
- Postupy: Použití bloků Finally
- Zpracování výjimek COM Interop
- Doporučené postupy pro výjimky
- Co každý vývojář potřebuje vědět o výjimkách v běhovém prostředí