1 / 15

Šesté cvičení

Šesté cvičení. Výjimky Balíky. 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. Error. RuntimeException. IOException.

Download Presentation

Šesté cvičení

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Error RuntimeException IOException Hierarchie výjimek Throwable jakákoliv chyba musí se odchytávat nemusí se odchytávat Exception například například například ArythmeticException NumberFormatException Java cv6

  4. Typy výjimek • Error • 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 • 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)throwsException { if (plat < 0) throw newException(); 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 packageza 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 mujbalik package mujbalik; class TridaVBaliku { … //telo tridy } soubor TridaVBaliku.java 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

More Related