Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

C# - Exceptions (výjimky)

Podobné prezentace


Prezentace na téma: "C# - Exceptions (výjimky)"— Transkript prezentace:

1 C# - Exceptions (výjimky)
Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

2 Co jsou výjimky ? V průběhu programu může dojít k situacím, které by mohli skončit chybou, zhroucením aplikace, systému Např.: nepovolené operace s různými datovými typy, chybné připojení k databázi, …. V případě že provádíme nějakou „rizikovou“ operaci je nutné ošetřit všechny situace, ke kterým její provedení může vést Jedním ze silných nástrojů je právě ošetřování výjimek Pokud operace neproběhne korektně, je vyvolána výjimka, se kterou můžeme následně pracovat a ošetřit program tak, aby na tuto situaci reagoval adekvátním zbůsobem V jazyce C# se pro ošetření rizikových částí programu používá konstrukce pomocí dvou klíčových slov try - catch Na rozdíl od způsobu zjišťování chyb pomocí návratových hodnot funkcí je možné pomocí výjimek zjišťovat a ošetřovat chyby v místě jejich vzniku Výjimka je objekt na hromadě, který nese informace o nastalé chybě, tento objekt je potomkem třídy System.Exception

3 Try - použití private void button1_Click(object sender, EventArgs e) { //definuji číslo typu double double myDblNumber; //označím sekci, která je riziková – převod string a číslo //sekce try pouze označuje chráněný blok, kde zkoušíme volat //metody try { myDblNumber = double.Parse(textBox1.Text); textBox2.Text = (MyDblNumber * 2).ToString(); }

4 Výjimky - exceptions K výjimce dojde automaticky při chybě v námi označeném bloku, nebo můžeme v případě potřeby výjimku generovat Př. (Generování výjimky):  public static float Vydel(int a,int b)  {   if (b == 0)    //vyhození výjimky    throw new DivideByZeroException();    return a / b;  } Kde DivideByZeroException je výjimka, která je vytvořena a vyhozena v případě, že jmenovatel je 0 Odpovědnost za zpracování této výjimky pak řeší objekt, který tuto metodu volá

5 Odchytávání výjimek (Exceptions handling)
Pomocí klíčového slova catch U každého handleru je uveden typ výjimky pro kterou je daný handler určen Př. (navazující na už definovanou funkci): public static void MetodaVolajiciVydel() {  try  {   float lVysledek = Vydel(4,0);   //následující řádek se při vyvolaní výjimky v metodě Vydel neprovedou   Console.WriteLine("Vysledek deleni: " + lVysledek);  } //sekce pro odchytnutí výjimky pro dělení nulou  catch(DivideByZeroException ex)  {   Console.WriteLine("Pri deleni doslo k deleni nulou! " + ex);  } }

6 V kódu může být samozřejmě několik sekcí catch pro odchytnutí jednotlivých výjimek
Pokud v kódu uvedeme sekci : catch(System.Exception ex) označíme tak blok pro odchytnutí všech výjimek Po vyhození výjimky v sekci try dojde ke konci provádění kódu a program pokračuje ošetřením výjimky Někdy může být užitečné napsat kus kódu, který proběhne nezávisle na tom zda v sekci „try“ došlo k chybě nebo ne (zpravidla jde o ukončení nějaké činnosti korektní cestou, např. skončení DB spojení,…) tato sekce je uvozena klíčovým slovem finally

7 Více o výjimkách Každá výjimka „probublává“ v hierarchii metod, které se navzájem volají až do místa, kdy není zachycena. Pokud k zachycení nedojde, je zachycena běhovým prostředím a uživateli je tímto běhovým prostředím zobrazeno okno oznamující vzniklou chybu. Pro každého programátora je ošetření programu proti chybou důležitou a nedělitelnou součástí tvorby SW a výjimky jsou silným nástrojem k této činnosti Tvorba vlastních výjimek Využití vlastnosti .Message – třídy System.Exception (vypíše informace o chybě) Využití vlastnosti .StackTrace – třídy System.Exception (užitečná vlastnost při ladění a trasování původce chyby)

8 .Message static void Main(string[] args)  {   try   {    DeleniNulou.Vydel(5,0);   }   catch (DivideByZeroException ex)   {    //vypsání vlastnosti Message nastalé výjimky    Console.WriteLine(ex.Message);   }   Console.ReadLine();  }

9 Úkoly Vytvořte jednoduchou aplikaci, která bude dělit dvě čísla zadaná uživatelem. Pomocí výjimek ošetřete program na různé druhy možných chyb při běhu programu a vypište odpovídající chybové zprávy. Dělení nulou, přetečení rozsahu činitelů, špatný datový typ.

10 Seriály o programování v jazyce C# : www.živě.cz www.java2s.com
Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Použité materiály: Kniha: Programujeme profesionálně, nakladatelství WROX, autor: Jay Glynn,… Seriály o programování v jazyce C# :


Stáhnout ppt "C# - Exceptions (výjimky)"

Podobné prezentace


Reklamy Google