Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaΦαίδρα Αγγελόπουλος Megváltozta több, mint 5 éve
1
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Kivételkezelés. Elemi input a Consol osztály segítségével Kovács Zsuzsanna 2009 TÁMOP /1-2F
2
JAVA PROGRAMOZÁSI NYELV NETBEANS KÖRNYEZETBEN
14/05. KIVÉTELKEZELÉS ELEMI INPUT A CONSOL OSZTÁLY SEGÍTSÉGÉVEL
3
HIBA, BIZTONSÁGOS PROGRAM
01. Szintaktikai hiba Szemantikai hiba Biztonságos program szemantikai hibákat megpróbálja kezelni a belőlük következő hibákkal együtt ennek módja: kivételkezelés imt i = 0; system.out.println(„alma”); for (int i = 0, i<= 10, i++)... int a=0, b=10/a; x1=(-b+Math.sqrt(b*b-4*a*c))/2*a; args[++i]
4
KIVÉTELKEZELÉS 02. kivétel (exception): a program futása során bekövetkező hiba; olyan esemény, amely megszakítja az utasítások végrehajtásának normális menetét kivételobjektum: ha hiba keletkezik, automatikusan létrejön kivétel kiváltódása: a hiba hatására létrejön az objektum kivétel elkapása: kivételt lehetőségünk van elkapni és kezelni kivételkezelés: azt a programrészletet, melyben az adott hibát orvosoljuk ellenőrzött kivétel: kezelése minden esetben kötelező; nem kezelése szintaktikai hibát eredményez, és a program fordítása sikertelen lesz nem ellenőrzött kivétel: kezelése nem kötelező; kiváltódásának ellenőrzése sem kötelező, ám minden esetben ajánlott 4
5
KIVÉTELOSZTÁLYOK 03. Ellenőrzött kivételek Nem ellenőrzött kivételek
IOException Ki- és bemeneti hibák esetén váltódik ki, pl. konzolról való beolvasáskor. FileNotFoundException Az IOException egyik alkivételosztálya. Akkor kapjuk például, ha nem létező fájlba próbálunk írni. EOFException Fájl végét jelző kivétel. Szintén az IOException alosztálya. RuntimeException Valamennyi futásidejű kivétel ősosztálya. NullPointerException Olyan esetben kapjuk, ha null értékű, azaz inicializálatlan változóra vagy objektumra hivatkozunk. IndexOutOfBounds Exception Túlindexelést jelző kivétel. Akkor kapjuk, ha egy tömb, karakterlánc, vagy más indexelhető szerkezet nem létező indexére hivatkozunk. ArithmeticException Aritmetikai műveletek hibájakor kapjuk, például nullával való osztáskor. NumberFormatException Akkor kapjuk például, ha nem megfelelő számot tartalmazó karakterláncot próbálunk szám típusúvá konvertálni. IllegalArgument Exception Akkor váltódik ki, ha egy metódust nem megfelelő paraméterekkel hívunk. 5
6
TRY-CATCH BLOKK 04. Ha a kivételt nem kezeljük abban a blokkban, ahol keletkezett, úgy a tartalmazó blokknak adódik át. Ez egészen addig folytatódik, míg valahol nincs egy olyan kivételkezelő blokk, mely az adott kivételt kezelné. Ha a kivételt egyik blokkban sem kezeljük, és feljut a legfelsőbb szintre: a program terminál Szintaktikája try { kritikus műveletek; } catch (KivételTípus1 e1) { hibakezelés } catch (KivételTípus2 e2) { } ... 6
7
TRY-CATCH BLOKK HASZNÁLATA
05. Példa public class Osztas { public static void main(String[] args){ int szam = Integer.parseInt(args[0]); int eredmeny = 1/szam; System.out.print("A szám reciproka: "); System.out.print(eredmeny); } 7
8
TRY-CATCH BLOKK HASZNÁLATA
06. Helyesen public class Osztas { public static void main(String[] args){ try { int szam = Integer.parseInt(args[0]); int eredmeny = 1/szam; System.out.print("A szám reciproka: "); System.out.print(eredmeny); } catch (NumberFormatException e) { System.err.println("Hibás számformátum!"); } catch (ArithmeticException e) { System.err.println("Osztási hiba!"); } 8
9
FINALLY ÁG 07. Olyan kódrészlet, amely normál programműködés és kivétel keletkezése esetén is mindenképpen lefut Akkor is végrehajtódik, ha a kapott kivételt az adott blokkban nem kezeljük. Általában a kritikus műveletekhez szükséges erőforrások felszabadítását, az ott megnyitott fájlok bezárását, stb. szokás megvalósítani benne. Szintaktikája try { kritikus műveletek } catch (KivételTípus1 e1) { hibakezelés } ... finally { befejező műveletek 9
10
A CONSOL OSZTÁLY 08. A Consol osztály segítségével a konzolról olvashatunk be. A Consol osztály metódusai A metódusok IOExceptiont és NumberFormatExceptiont dobhatnak. readInt("szöveg") A paraméterként megadott szöveget a képernyőre írja, majd beolvas egy int típusú számot, melyet visszatérési értékként ad meg. readFloat("szöveg") A paraméterként megadott szöveget a képernyőre írja, majd beolvas egy float típusú számot, melyet visszatérési értékként ad meg. readString("szöveg") A paraméterként megadott szöveget a képernyőre írja, majd beolvas egy karakterlánc típusú számot, melyet visszatérési értékként ad meg. 10
11
A CONSOL OSZTÁLY HASZNÁLATA
09. Példa public class Osztas { public static void main(String[] args){ try { int szam = Consol.readInt("Adj egy számot: "); float eredmeny = (float)1/szam; System.out.print("A szám reciproka: "); System.out.print(eredmeny); } catch (IOException e) { System.err.println("Hiba történt beolvasáskor."); } catch (NumberFormatException e) { System.err.println("Hibás számformátum!"); } 11
12
A CONSOL OSZTÁLY HASZNÁLATA
10. A Consol osztály használata és kivételkezelést támogató eszközök a NetBeansben SZINFO13_VID_05_01 12
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.