|
1
|
- Róbert Novotný
- robert.novotny@upjs.sk
- 7. 12. 2007
|
|
2
|
- Život programátora je smutný
- Všade je kopa chýb
- chyby syntaktické:
- hlásené kompilátorom – vieme vyriešiť
- chyby pri behu programu
|
|
3
|
- Behové chyby: čím je bližšie termín odovzdania projektu, tým viac
behových chýb vzniká
- programátorský škriatok dá na vstup nesprávne údaje
- ,,Pretože tam, kde očakávate vstup 12, užívateľ just zadá Britney
Spears is not dead!
- súbory sa záhadne presúvajú po disku
- na disku dôjde miesto
- príčinou nemusí byť nutne DC++/Torrent/eMule...
- administrátor sa rozhodol zmeniť heslá k databáze
- ,,Jsem princezná Rosella a zaspívám vám písničku: Divide by zero
overflow"
|
|
4
|
- Riešenie: Výnimky
- Príklad: synček píše domácu úlohu.
- Algoritmus:
- vezmi učebnicu, písanku a pero
- vyrieš príklad
- po skončení ju odlož do aktovky
|
|
5
|
- Klasické jazyky:
- nájdi pero. Podarilo sa?
- nájdi písanku. Podarilo sa?
- nájdi zadanie. Podarilo sa?
- Jazyky s podporou výnimiek:
- Nebudeme sa synčeka pýtať, či našiel pero, či má písanku, a či si vôbec
zapísal znenie DÚ
- Necháme ho pracovať a synček sám zahlási, ak mu niečo prekáža vo
vyriešení úlohy
- Všetky prekážky bude musieť niekto (otecko?) odstrániť, resp. sa s nimi
vysporiadať
|
|
6
|
- skús toto:
- nájdi pero
- nájdi písanku
- nájdi zadanie
- vyrieš príklad
- odlož všetko do tašky
- ak sa niečo nepodarilo...
- pero nemá atrament, písanku zjedol pes, zadanie je naškrabané...
- ....DÚ asi nedokončíme, musíme sa s tým nejak vysporiadať
|
|
7
|
- try {
- Pero pero = izba.getPero();
- Písanka zošit = izba.getPísanka();
- String zadanie = učebnica.getDÚ();
- dieťa.vyriešDomácuÚlohu(pero, zošit, zadanie)
- taška.odlož(pero, zošit)
- } catch (PeroJePrázdneException e) {
- System.out.println("Prepáčte, že som
- nenapísal DÚ, ale nemal som atrament");
- } catch (NemámPísankuException e) {
- System.out.println("Prepáčte, že som
- nenapísal DÚ, ale nemal som písanku a
- obchod bol zavretý");
- }
|
|
8
|
- Čo je PeroJePrazdneException?
- exception = výnimka
- ľubovoľná metóda môže v prípade chyby vyhodiť výnimku
- výnimka znamená, že nastala chybová situácia a beh metódy sa ukončil
- kus kódu, ktorý takúto metódu volá, môže
výnimku odchytiť a vysporiadať sa s ňou
|
|
9
|
|
|
10
|
|
|
11
|
|
|
12
|
|
|
13
|
|
|
14
|
|
|
15
|
|
|
16
|
|
|
17
|
- Blok finally sa vykoná vždy
- Ak nastane v try bloku výnimka
- vykoná sa kód v príslušnom catch bloku
- Potom sa vykoná finally blok
- Ak výnimka nenastane
- dokončí sa try blok
- Potom sa vykoná finally blok
|
|
18
|
|
|
19
|
|
|
20
|
|
|
21
|
|
|
22
|
|
|
23
|
|
|
24
|
|
|
25
|
|
|
26
|
|
|
27
|
|
|
28
|
|
|
29
|
|
|
30
|
|
|
31
|
|