P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Tömbök C#-ban.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Gyakori hibák C# programozásban
Hibakezelés és Tesztelés a Visual Studio.NET-ben
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Bevezetés a Java programozásba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A Java programozási nyelvSoós Sándor 1/24 Java programozási nyelv 9. rész – Kivételkezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
C# tagfüggvények.
C# tagfüggvények.
Krizsán Zoltán iit 1.2.  Nem kell vizuális felületnek lennie.  Delegátumok segítségével valósíthatja meg a.NET. Krizsán Zoltán iit Delegátumok C#-ban2.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
© Kozsik Tamás Kivételek A program végrehajtása során ritkán bekövetkező események Nem a „fő végrehajtási ág”; logikailag alacsonyabbrendű feladat.
Programozás I Függvények általános jellemzői
Kivételkezelés.
Kivételkezelés a C++ nyelvben Bevezetés
Vezérlési szerkezetek: elágazások, ciklusok
Programozás C# -ban Elágazások.
Programozás alapismeretek
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Programozás Az adatokról C# -ban.
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
Összetett adattípusok
Beolvasó utasítás Console.Read();  Int típusú adatot kapunk. Console.ReadLine();  String típusú adatot kapunk. Console.ReadKey();  Tetszőleges billentyű.
Programozási nyelvek összehasonlító elemzése
Szintaktikai, szemantikai szabályok
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
AAO Csink László november.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
Java programozási nyelv Adatbekérés konzolról
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Programozás III KIVÉTEL.
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Kivételek kezelése, ellenőrzött adatbevitel Czigléczky Gábor 2009.
TÁMOP /1-2F Felkészítés szakmai vizsgára, informatika területre modulhoz II/14. évfolyam Az interaktív vizsga jellegzetes feladattípusainak.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Gépészeti informatika (BMEGEMIBXGI)
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

P ROGRAMOZÁS C# - BAN Kivételkezelés

P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.

P ÉLDA II. A hibaüzenetet azért kapjuk mert a felhasználói bevitelnél nem egész számot adtunk meg!

K IVÉTELEK A kivétel egy jelzés, amelyet akkor indít útra egy függvény, ha nem valamilyen oknál fogva nem tudja végrehajtani a rábízott feladatot Pl: nullával való osztás A hiba jelzés után azonnal visszatér a hívás helyére, azaz automatikusan végrehajtódik a return parancs

K IVÉTELEK Ha a kivételt a hívás helyén nem kezeljük, akkor ezen függvény is visszatér a hívó pontra és így tovább… Ha a kivétel a Main() függvényben keletkezik, akkor a hibát az operációs rendszer ”fogja el”, amire saját hibaüzenettel válaszol  ekkor gyakran leáll programunk futása.

K IVÉTEL DOBÁSA Kivétel keletkezésének két lehetősége van: Egyik lehetőség amikor a keretrendszer generálja hibát, amelyet ha nem kapunk el, akkor az operációs rendszertől kapjuk a hibaüzenetet Másik lehetőség, hogy mi is tudunk kivételt dobni, amennyiben valamilyen hibalehetőséget találunk programunk logikájában

K IVÉTEL KEZELÉS ( EXCEPTION HANDLING ) A kivétel kezeléséhez 4 új utasítást vezetünk be: try : ezt követő blokkot nevezzük védett blokknak, itt keletkezhet a hiba catch : ezzel az utasítással kaphatjuk el a védett blokk után a hibát throw : saját kivétel dobása, kivétel továbbadása finally : végzáradék, a védett blokk végén biztosan végrehajtódik

K IVÉTELKEZELÉS FORMÁTUMA try { Védett blokk, azon utasítások amelyek hibát okozhatnak. } catch (Exception e) { Itt történik a hiba fajtájától függő hiba kezelése. Olyan hibát kezelünk le, amilyet a catch után elkaptunk. } finally { Ezen utasítások mindenképp végrehajtódnak. }

K IVÉTELKEZELÉS try { … } catch (Exception e ) { … } try { … } catch (Exception e ) { … } Az a programszakasz, amelyik kivételt dobhat Itt specifikáljuk, milyen típusú kivételeket kívánunk elkapni Itt dolgozzuk fel a kivételt ( mit kell csinálni, ha kivétel történt ) Ezen a néven hivatkozhatunk a feldobott példányra a kivételt feldogozó kódban (változó-deklaráció)

A catch után elkapunk egy hibát, amely az Exception osztály vagy annak leszármazottja lehet. Ezt egy e nevű objektummal azonosítjuk. Itt egy általános hibát kapunk, amelyet természetesen speciálisan is meg lehet adni (erről bővebben az MSDN-ben)

P ÉLDA I. try { Console.WriteLine("Kérek egy egész számot: "); int a = Int32.Parse(Console.ReadLine()); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("Vége"); } Itt keletkezhet a hiba Ha van hiba itt kapjuk el! Ezzel kiíratjuk az elkapott hiba üzenetét! Ez a blokk mindenképp lefut!

N ÉHÁNY SPECIÁLIS HIBAÜZENET System.ArithmeticException System.FormatException System.DivideByZeroException System.IndexOutOfRangeException Amennyiben ilyen speciális hiba előfordulására számítunk, úgy a catch után őt kapjuk el először és csak később az általános hibaosztályt.

P ÉLDA II. try { int x = 20; int y = 0; int h = x / y; } catch (DivideByZeroException hiba) { Console.WriteLine(hiba.Message); } finally { Console.WriteLine("Vége"); }

K IVÉTELEK Látható, hogy az előző példában már speciális hibát fogtunk meg (DivideByZeroException) Ki is írattuk, hogy hiba van, de ha még előfordulhat más hiba is a védett blokkban, akkor további catch blokkok alkalmazásával elkaphatjuk azokat is. Ügyeljünk arra, hogy ezen speciális hibák felépítése hierarchikus,először a speciális hibákat kapjuk el, majd később jöhetnek az általánosabb hibák, majd legvégül az ősosztály az Exception elkapása. A Base Class Library metódusaihoz a help-ben le van írva, hogy milyen típusú kivételt dobnak…

K IVÉTEL DOBÁSA try { int x = 20; int y = 0; if (y == 0) { throw new DivideByZeroException("Nullával nem lehet osztani!!!"); } else { int h = x / y; } catch (DivideByZeroException hiba) { Console.WriteLine(hiba.Message); }

KIVÉTEL DOBÁSA Látható, miután megvizsgáltuk az osztó értékét és rájöttünk, hogy nulla, mi magunk indítottunk útnak egy kivételt ”Nullával nem lehet osztani!” üzenettel. Ezt elkapva az üzenetét kiíratva már a mi saját hibaüzenetünket láthatjuk a képernyőn Természetesen létrehozható saját kivétel osztály az Exception-ből származtatva, ezekről bővebben az MSDN-ben olvashatunk.

F ELADATOK Ezen leckéhez nem tartoznak feladatok, de Gyakorlásképpen néhány eddig feladatban, amelyben egész vagy valós számot kérünk be, kezeljük le, hogy ne írhassanak be stringet a felhasználók Ugyanígy az eddig megírt programjainkban kezeljük a nullával való osztás problémáját