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.

Slides:



Advertisements
Hasonló előadás
Tananyag: konzultáció
Advertisements

C++ programozási nyelv Gyakorlat hét
Programozás III KOLLEKCIÓK 2..
3. A programozás eszközei, programozás-technikai alapismeretek
Gyakori hibák C# programozásban
Hibakezelés és Tesztelés a Visual Studio.NET-ben
Packaging: Az osztályok legyenek logikailag rendezett csomagokban, azaz különüljenek el funkció szerint. Pl: hu.elpaso.example hu.elpaso.example.view hu.elpaso.example.logic.
© 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. 8. Gyakorlat Operator overloading II.
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.
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Fejlett Programozási Technikák 2.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Mutatók, tömbök, függvények
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.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
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.
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
© 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.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Programozás I. Ciklusok
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
Kivételkezelés.
Kivételkezelés a C++ nyelvben Bevezetés
Bevezetés a C++ programozási nyelvbe
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
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,
Programozási nyelvek összehasonlító elemzése
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
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.
Hernyák Zoltán Programozási Nyelvek II.
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 Metódusok
Java programozási nyelv Adatbekérés konzolról
Objektum orientált programozás
Programozás III KIVÉTEL.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
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.
Script nyelvek előadás
Programozási nyelvek típusossága.
Hernyák Zoltán Programozási Nyelvek II.
Beépített függvények használata programozáskor
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
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

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 túlindexelése) ─ ArithmeticException (pl. osztás nullával) A Java támogatja ezen hibák kezelését, ezt nevezzük kivételkezelésnek.

KIVÉTELKEZELÉS – PÉLDA HIBÁS PROGRAMRA Nullával való osztás:

A fordító minden további nélkül lefordította a programot! DE! Futási időben hibát kapunk: Melyik metódusban keletkezett a hiba? KIVÉTELKEZELÉS – PÉLDA HIBÁS PROGRAMRA Milyen hiba van? Melyik sornál történt hiba? Mi a hiba oka?

A kivételek jelenítik meg a hibákat. A kivételek (exceptions) objektumok, a kivételosztályok példányai Amikor hiba történik, létrejön egy kivétel objektum, ami a hibáról tartalmaz értékes információkat. (Ilyen kivétel objektum pl. az ArithmeticException vagy az ArrayBoundsOfException osztály egy példánya is) Szóhasználat: kivétel keletkezik (occurs), dobódik (is thrown) vagy explicite dobjuk (throw). A kivétel kezelése (handling): a dobott kivételt elkapjuk (catch). KIVÉTELKEZELÉS

Error: rendszerhiba Exception: kivétel nem kezelhető kezelhető!!!!!!! KIVÉTELKEZELÉS - KIVÉTELOSZTÁLYOK

Kivételek típusai: KIVÉTELKEZELÉS Ellenőrzött kivétel (checked exception) Az ilyen kivétel kezelése kötelező Ezek az Exception osztály leszármazottai Pl.: fájlkezeléssel kapcsolatos kivételek Ellenőrizetlen kivétel (unchecked exception) A hiba kezelése nem kötelező, mert nagyon kényelmetlenné tenné a programozást, átláthatatlanná a programkódot. Ezek a RuntimeException, vagy az Error osztály leszármazottai. Pl.: nullpointer használata, nullával való osztás.

Kivétel dobása: KIVÉTELKEZELÉS Kivételt a throw kulcsszóval tudunk dobni. Formátuma: throw Kivételobjektum; A kivételobjektum a Throwable osztálynak vagy leszármazottainak egy példánya lehet.

(szándékos) Kivétel dobása – példa: KIVÉTELKEZELÉS

Kivétel dobása – példa: KIVÉTELKEZELÉS Exception in thread "main" java.lang.RuntimeException: Próbálkozás at Egyik.m1(KivetelUtja.java:3) at KivetelUtja.m2(KivetelUtja.java:10) at KivetelUtja.main(KivetelUtja.java:14) Process completed. KivetelUtja.main(…)KivetelUtja.m2()Egyik.m1() … m2() … Egyik.m1() … ………… 

A kivételeket el tudjuk kapni (catch) és kezelni tudjuk őket, tehát nem feltétlenül kell a programunknak hibával „elszállnia”. Erre jó a try – catch szerkezet. KIVÉTELKEZELÉS

A 7-es Java óra már az is megengedett, hogy a catch blokkban egyszerre több kivételtípust kezeljünk, pl.: KIVÉTELKEZELÉS

Felépítése: - try blokk: A try blokk tartalmazza a program normális logikáját tükröző utasításokat. Általában a try blokk futása során keletkeznek azok a kivételek, amelyeket el kell fognunk - catch blokk: Minden catch blokk egy-egy kivételkezelőt definiál. A blokk fejében paraméterként pontosan egy formális kivétel- objektum van megadva. A catch blokk fogja kezelni az érkező kivételobjektumot. KIVÉTELKEZELÉS – TRY-CATCH SZERKEZET

A try – catch blokk végrehajtása: Ha a try blokk utasításainak végrehajtása során nem dobódott kivétel, a try-catch blokk végrehajtása normálisan befejeződik. Ha kivétel dobódott, sorban megpróbáljuk illeszteni a kelet- kezett kivétel objektumot a catch blokkok fejében szereplő osztályokra. Illeszkedés: a kivétel osztály megegyezik a catch blokk fejében adott osztállyal, vagy annak leszármazottja. Ha volt illeszkedés, az adott catch blokkot végrehajtjuk, és a try-catch blokk normálisan befejeződik, illetve ha a catch blokkban újabb kivétel dobódik, kivétellel fejeződik be. (  fontos a sorrend) Ha nincs illeszkedés, a try-catch blokk kivétellel fejeződik be. A TRY- CATCH SZERKEZET MŰKÖDÉSE

Általános hibakezelés: Abban az esetben, ha nem tudjuk, hogy milyen hibák keletkezhetnek a try blokkon belül, akkor lehetőségünk van olyan hibakezelésre, amellyel bármilyen hibát elkapunk. Ezt úgy valósíthatjuk meg, ha a catch ágban az általános Exception osztályt használjuk. Erre a szabályra minden kivétel illeszkedik. A TRY- CATCH SZERKEZET MŰKÖDÉSE

KIVÉTELKEZELÉS – A PÉLDA JAVÍTÁSA Próbálkozás Process completed.

Szükségünk lehet arra, hogy a try-catch lefutásának eredményétől függetlenül végrehajtsunk egy kódrészletet. Erre szolgál a finally blokk. Itt szokás elvégezni a mindenképpen szükséges műveleteket. A finally blokk mindenképpen végrehajtódik!!! KIVÉTELKEZELÉS – TRY-CATCH-FINALLY SZERKEZET

KIVÉTELKEZELÉS – SAJÁT KIVÉTEL

Bizonyos esetekben a kivételkezelés kötelező!!!! (ellenőrzött kivételkezelés) (pl. a beolvasásnál – ld. Input.java fájl.) KÖTELEZŐ KIVÉTELKEZELÉS

KIVÉTELKEZELÉS – PÉLDA Az indító példa javítása:

KIVÉTELKEZELÉS – PÉLDA: MI AZ EREDMÉNY?