Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Šesté cvičení Výjimky Balíky
2
Výjimky Výjimka chybová událost, výjimečný stav programu objekt, který chybovou událost popisuje speciální zacházení s těmito objekty Umožňuje programátorovi (nutí programátora) reagovat na chybové stavy Java cv6
3
NumberFormatException
Hierarchie výjimek Throwable jakákoliv chyba musí se odchytávat nemusí se odchytávat Error RuntimeException Exception například například IOException například ArythmeticException NumberFormatException Java cv6
4
Typy výjimek Error RuntimeException a její potomci
závažná chyba programu způsobená okolím (chyba HW, nedostatek paměti, …) Nemusíme na ní reagovat a většinou to nemá smysl RuntimeException a její potomci Chyba, která může nastat kdekoliv v programu (aritmetická chyba, překročení velikosti pole, …) Nemusíme na ní reagovat, ale má to smysl tam, kde se dá očekávat Exception a její potomci Musíme na ní nějakým způsobem reagovat (definovat chování programu pokud nastane) Java cv6
5
Reakce na výjimku Ošetření výjimky Předat výš Kombinace obojího
programátor napíše kód, který se provede když výjimka nastane Předat výš pokud v daném místě nedokážu nebo nechci výjimku ošetřit, předám jí dál Kombinace obojího Java cv6
6
Ošetření výjimky Pomocí konstrukce try-catch-finally
Inkriminovaný kus kódu obalím blokem try a za něj napíšu co se má stát pokud k výjimce dojde. blok finally není povinný Př.: try { int cislo = Integer.parseInt(args[0]); } catch (NumberFormatException e) { System.out.println(“Parametr musí být číslo“); return; } Java cv6
7
Předání výjimky výš Deklaruji, že metoda může vyhodit výjimku
Tím nutím programátora, aby jí ošetřil v místě, kde tuto metodu volá Pokud není výjimka ošetřená nikde, program se ukončí a výjimka se vypíše na konzoli Př.: int prectiZnak() throws IOException { int i = System.in.read(); return i; } Java cv6
8
Způsoby vzniku výjimky
Výjimka vyhozená JVM způsobená okolím způsobená chybou v programu Výjimka vyhozená explicitně v programu pomocí příkazu throw Př: int spoctiPremie(int plat) throws Exception { if (plat < 0) throw new Exception(); return plat*1.20; } Java cv6
9
Vlastní výjimky Normální objekt, který je potomkem Exception nebo RuntimeException Př.: public class MojeException extends Exception { public MojeException(String popisChyby) { super(popisChyby); } Java cv6
10
Balíky Java cv6
11
Balíky „Něco jako knihovna“
Balíky obsahují přeložené soubory tříd (.class) Rozdělení tříd do logicky souvisejících celků Vyřešení konfliktů se jmény tříd Možnost omezení přístupu ke třídě Balík se definuje na začátku souboru klíčovým slovem package za kterým následuje jméno balíku Java cv6
12
Balíky Každá třída je v nějakém balíku
Pokud není explicitně balík definovaný, je v balíku default Všechny třídy, které nemají definovaný balík, jsou ve stejném balíku! Balíky a třídy se mapují na adresáře souborového systému Hierarchie balíků <-> hierarchie adresářů Java cv6
13
Balíky package mujbalik; class TridaVBaliku { … //telo tridy }
soubor TridaVBaliku.java package mujbalik; class TridaVBaliku { … //telo tridy } TridaVBaliku.class podbalik soubor JinaTrida.java package mujbalik.podbalik; class JinaTrida { … //telo tridy } JinaTrida.class Java cv6
14
Použití tříd z jiného balíku
Vždy se dá použít plné jméno třídy (včetně balíku) např.: java.lang.String) Importuji třídy z balíku pomocí klíčového slova import nejde o „vložení“ tříd z balíku pouze o rozšíření jmen tříd import všech tříd v balíku: import java.io.*; import jedné třídy z balíku: import java.io.InputStream; Java vždy importuje balíky java.lang.*; default aktuální balík Java cv6
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.