c exception handling tutorial with code examples
Zpracování výjimek je metoda pro zpracování chyb, ke kterým může dojít během provádění programu. Tento kurz vysvětluje zpracování výjimek v C # s příklady kódu: This Tutorial Explains Exception Handling in C # with Code examples:
qa testovací otázky pohovor pro zkušené
Zpracování výjimek se používá k zajištění toho, že tok programu pokračuje, i když došlo k chybě za běhu. Výjimkou jsou objekty, které jsou vyvolány při narušení jakékoli runtime chyby.
Pokud výjimky nejsou zpracovány, pak C # vytvoří zprávu o výjimce a ukončí program, to je místo, kde do obrázku přijde zpracování výjimek.
=> Přečtěte si C # průvodce pro začátečníky zde
Co se naučíte:
- Co jsou výjimky?
- Klíčová slova pro zpracování výjimek
- Třídy výjimek přítomné v C #
- Zpracování výjimek v C #
- Závěr
- Doporučené čtení
Co jsou výjimky?
Výjimkou jsou bezprecedentní chyby, ke kterým může během běhu dojít uvnitř vašeho programu. Většina časových programátorů dokáže snadno detekovat některé chyby, jako je validace nebo nulová kontrola nebo při ověřování některých hodnot.
Existují však určité doby, kdy nemůžeme předvídat, co nebo kdy se objeví chyba. Například, řekněme, že hledám soubor na určitém místě. Můj program bude fungovat naprosto v pořádku, dokud nebude soubor k dispozici, a pokud byl soubor nějak odstraněn, můj program způsobí chybu.
Výjimky se nevyskytují pravidelně, ale přesto k nim může dojít a budete s nimi vždy chtít zacházet opatrně. K jejich zpracování používáme zpracování výjimek.
Kdykoli dojde k chybě, řekneme, že je vyvolána, „vyvolána“ je objekt z Výjimka systému třída v C #. The Výjimka systému třída nabízí různé metody a vlastnosti, které poskytují podrobnosti o chybě, se kterou se váš program právě setkal.
Jako vlastnost trasování zásobníku, která poskytuje zásobník, u kterého došlo k problému, nebo vlastnost Message, která poskytuje popis výjimky.
Klíčová slova pro zpracování výjimek
Výjimky nabízejí proces řízení určité části programu, takže i když v této části existuje výjimka, pak se řízení programu přenese do jiné části programu. V C # je zpracování výjimek v zásadě postaveno na čtyřech klíčových slovech: házet, zkoušet, chytat a nakonec .
házet
Jak jsme již diskutovali, hod je objekt z Výjimka systému třída v C #. Umožňuje programu vyvolat chybu, kdykoli na ni narazí.
Snaž se
Try block uzavírá blok kódu, který může způsobit, že program vyvolá výjimku. Za ním následuje jeden nebo více bloků úlovku.
implementace třídění bublin c ++
úlovek
Při pokusu o blok narazí na výjimku, poskytuje ovládací prvek bloku catch, aby zachytil výjimku. Blok catch může také obsahovat sadu kódů, které program potřebuje provést v případě výjimky, nebo může pouze zachytit výjimku a nedělat nic v závislosti na scénáři a požadavku.
Konečně
Poslední blok se používá k provedení konkrétního fragmentu kódu nebo instrukce bez ohledu na výskyt výjimky. Nakonec je blok vždy spuštěn a může být spuštěn hned po bloku, který se snaží, pokud program nenalezne žádnou výjimku, nebo může být proveden po bloku catch, jakmile program zachytí výjimku.
Třídy výjimek přítomné v C #
Všechny výjimky v C # jsou odvozeny přímo nebo nepřímo z Výjimka systému třída.
Pojďme se krátce podívat na některé z nejčastějších výjimek:
- System.IO.IOException: Zpracovává jakékoli chyby související se vstupem a výstupem.
- System.DividedByZeroException: Zpracovává chybu vyvolanou, když je číslo vyděleno nulou.
- System.NullReferenceException : Zpracovává všechny chyby, ke kterým může dojít při odkazování na nulový objekt.
- System.IndexOutOfRangeException: Zpracovává chybu vyvolanou, když se program pokusí získat přístup k indexu, který je mimo rozsah pole.
- System.OutOfMemoryException: Zpracovává chybu vyvolanou kvůli nedostatečné přítomnosti paměti.
Zpracování výjimek v C #
C # má velmi dobře definované řešení pro zpracování jakéhokoli typu výjimky, ke které může dojít pomocí bloku try and catch. Pomocí tohoto bloku lze oddělit základní příkaz programu od ostatních příkazů.
Příklad:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
Ve výše uvedeném příkladu jsme uzavřeli náš kód pro otevření souboru v bloku try. Protože jsme nezadali žádnou platnou cestu k souboru, měl by kód vyvolat chybu. Nyní jsme zachytili chybu v našem bloku chycení. Pokud soubor v dané cestě k souboru neexistuje, pak kód vyvolá FileNotFoundException.
Tuto výjimku zachytí blok catch, kde jsme již definovali očekávanou výjimku. Nyní si představme, že pokud náš kód vyvolá nějakou jinou výjimku, kromě té, kterou jsme již definovali, náš blok ji nebude schopen zachytit. Abychom zachytili jakoukoli obecnou výjimku, přidáme další blok zachycení.
Podívejme se na náš aktualizovaný kód:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Tento obecný blok zachycení bude schopen zachytit všechny výjimky, které mohou být vyvolány uvnitř bloku try. Nyní k tomu přidáme konečný blok. Abychom to zjednodušili, jednoduše si vytiskneme zprávu pomocí bloku finally.
inženýr vývoje softwaru v otázkách testovacích rozhovorů
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Zde jsme právě přidali konečný blok s jednoduchou zprávou. V bloku můžete také přidat několik vlastních příkazů. Celková struktura programu ale zůstane podobná té, která je zde zobrazena.
Blok Konečně bude vždy proveden bez ohledu na to, zda existuje výjimka nebo ne. Program začne od bloku try a poté se přesune přímo do bloku final, pokud neexistují žádné chyby / výjimky. Pokud narazí na výjimku, přesune se nejprve na catch a poté provede poslední blok.
Existuje podmínka, kdy konečný blok nebude proveden?
Jak název napovídá, poslední blok je proveden na konci a je posledním blokem kódu, který bude spuštěn. Nakonec se blok spustí vždy, když je aplikace spuštěna. Jediný čas, kdy se blok nakonec nespustí, je ten, když aplikace spadne nebo je úmyslně zabita pomocí příkazu procesu.
Závěr
Pokud výjimky nejsou zpracovány správně, způsobí chybu uvnitř vašeho programu. Pokud jste nikde uvnitř kódu nepoužili bloky try / catch, program se přeruší se zprávou zobrazující výjimku. Obecnému uživateli bude velmi obtížné vysledovat chybu zpět ke zdrojovému kódu a vyřešit ji.
Proto je vždy dobrým zvykem zajistit zpracování výjimek ve vašem programu.
Ukázkový kód
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Podívejte se na naši kompletní sérii školení C # zde
Doporučené čtení
- Výukový program pro funkce / metody C # s příklady kódu
- Výukový program Python DateTime s příklady
- Výukový program SVN: Správa zdrojového kódu pomocí Subversion
- C # String Tutorial - Metody řetězců s příklady kódu
- Zpracování výjimek v C ++
- Výukový program pro želvy SVN: Revize v úložišti kódů
- Výukový program AWS CodeBuild: Extrahování kódu z Maven Build
- Jak zpracovat výjimku v SoapUI Groovy skriptech - SoapUI Tutorial # 11