KIV/PPA1 cvičení 10 Cvičící: Pavel Bžoch
Osnova cvičení Výjimky a práce s nimi Nácvik na online test
Výjimky Výjimečné situace, které nastávají za běhu programu Java na ně reaguje vyhozením výjimky Např. –dělení nulou, –přístup do prvku pole, který neexistuje, –vstupní soubor neexistuje apod. Je možné (někdy nutné) na ně reagovat
Typy výjimek Exception (kontrolované výjimky) –Je nutné je ošetřit přidáním dalšího kódu –Vyskytují se v souvislosti s voláním metod, kde se může s vysokou pravděpodobností vyskytnout výjimka –Typicky vstupně-výstupní operace RuntimeException –Není nutné je ošetřovat –Mohou nastat kdekoliv –Např. dělení nulou, špatný index pole, apod.
Runtime výjimky Nemusí být ošetřeny, protože mohou nastat kdykoliv Pokud není ošetřena konec programu –Vypíše se, kde došlo k výjimce –Programátor má možnost ji ošetřit, stejně jako kontrolovanou výjimku (viz dále), ale záleží to pouze na něm
Kontrolované výjimky Musí být ošetřeny tam, kde mohou nastat Pokud není ošetřena program nelze přeložit –Při překladu nastane chyba, ze které je patrné, kde není výjimka ošetřena Programátor ji musí ošetřit jedním ze dvou základních způsobů –Předání výjimky výše –Kompletní ošetření výjimky
Předání výjimky výše Použiji pokud –Metoda, ve které výjimka vzniká, není vhodná pro kompletní ošetření výjimky (např. chci, aby o výjimce věděla vyšší metoda z GUI) –Nevím, co s výjimkou dělat (propaguji až do main() včetně) Do hlavičky metody se přidá throws nazevVyjimky –Např. main(String[] args) throws IOException
Kompletní ošetření výjimky I Ošetřím výjimku (provedu nápravné akce) přímo v metodě, kde vznikla Vyšší metody se o jejím vzniku nedozví Přidám nový kód – blok try – catch – finally –Úsek kódu, ve kterém předpokládám vznik výjimky, se uzavře do bloku try { } –Za ním následuje blok catch(Exception e) { }, ve kterém je kód pro případ, že výjimka nastane – provede se jen při výjimce
Kompletní ošetření výjimky II –Nakonec může nacházet blok finally { }, který se provede ať výjimka nastane nebo ne try { //Provádí se dokud nenastane výjimka } catch (Exception ex) { //Provede se, když výjimka nastane } finally { //Provede se nakonec v každém případě }
Nácvik na online test Cílem –Vyzkoušet na dvou různých příkladech způsob, jakým bude probíhat online test Online test –Na 13. cvičení –Je nutno se přihlásit na portál (19 termínů v době jednotlivých cvičení – preferovaný je termín, kdy na cvičení chodíte) –Je nutno mít s sebou JIS nebo index kvůli ověření totožnosti studenta
Průběh online testu I Učebna UU409 bude po celý 13. týden zamčená z důvodu konání testu Před začátkem týdne a po každém cvičení se smažou disky D: na všech počítačích –Zazálohujte si svá data z tohoto disku Místnost se odemkne na začátku cvičení Každý se posadí k jednomu počítači Všichni si pak stáhnou svoji semestrální práci z portálu
Průběh online testu II Všichni si práci zprovozní v Eclipse nebo SciTE na školních počítačích!!! –Není možné používat vlastní notebooky –Ti, co jsou zvyklí na vlastní notebook, by si to ve vlastním zájmu měli vyzkoušet přímo na počítači v učebně (třeba dnes) Až bude semestrální práce rozchozená, bude rozdáno zadání Pak bude čas na přečtení zadání
Průběh online testu III Zadání spočívá v úpravě semestrální práce, aby dělala něco trochu jiného Po zodpovězení dotazů máte 60 minut na práci Povolené materiály –Dokumentace Java Core Api –Učebnice Jazyka Java (P.Herout) Zakázáno –Veškeré elektronické pomůcky –Komunikace s kolegy v učebně i mimo ni
Průběh online testu IV Po tom, co bude práce hotová, ji odevzdáte na portál (na validátor) –Bude preferováno, druhá možnost jen… Pokud by validátor nefungoval, je třeba použít utility Ppa1Vyhodnoceni.jar –Pro výstup z programu je pak možné použít třídu OnlineTestVypis.java
Průběh online testu V Po tom, co bude vaše řešení úspěšně zvalidováno (případně projde vyhodnocovací utilitou), zavoláte vyučujícího: –Ukážete výsledek validace (případně výsledek z utility) –Zkontroluje se vaše orientace ve vašem programu –Budou Vám přiděleny body
Průběh online testu VI Nakonec všechna zadání budou vybrána zpět Studenti odejdou –Nevypínat počítače –Pouze se odhlásit