Over si svoje vedomosti z kapitol o výnimkách. Klikni na Áno alebo Nie - tlačidlo sa hneď zafarbí (zelená = správne, červená = nesprávne) a zobrazí sa komentár s vysvetlením. Otázky prechádzaš po jednej pomocou tlačidiel nižšie.
Otázka 1 / 14
Blok try-catch v Kotline slúži na odchytenie a spracovanie chybových stavov (výnimiek) v programe.
Áno. Kód, ktorý môže zlyhať, umiestnime do bloku try a chybu spracujeme v catch.
Jeden blok try môže mať viacero catch vetiev pre rôzne typy výnimiek.
Áno. Napríklad môžeme mať samostatný catch (e: ArithmeticException) a catch (e: NumberFormatException).
Blok finally sa vykoná vždy - bez ohľadu na to, či v try nastala výnimka alebo nie.
Áno. finally je určený na kód, ktorý sa musí vykonať vždy, napríklad upratanie zdrojov.
try-catch môže byť v Kotline použitý ako výraz a vrátiť hodnotu, ktorá sa uloží do premennej.
Áno. Napríklad val cislo = try { readln().toInt() } catch (e: NumberFormatException) { null }.
Výnimky vyhadzujeme (vytvárame) pomocou kľúčového slova catch.
Nie. Na vyhodenie výnimky slúži kľúčové slovo throw, napríklad throw IllegalArgumentException("..."). catch naopak výnimky odchytáva.
Vlastnú výnimku vytvoríme jednoducho tak, že vytvoríme triedu, ktorá dedí z triedy Exception (alebo jej podtriedy).
Áno. Napríklad class InsufficientFundsException(amount: Double) : Exception("...").
Trieda Error reprezentuje bežné chyby aplikácie, ktoré by sme mali v kóde vždy odchytávať.
Nie. Error reprezentuje kritické chyby JVM (napr. nedostatok pamäte), ktoré nemá zmysel odchytávať. Bežné chyby reprezentuje trieda Exception.
RuntimeException je podtriedou Exception a patria do nej napríklad IllegalArgumentException aj NumberFormatException.
Áno. Dedičská hierarchia je Throwable → Exception → RuntimeException → IllegalArgumentException / NumberFormatException / ....
V Kotline musíme pri deklarácii funkcie explicitne uviesť, aké výnimky môže vyhodiť (podobne ako throws v Jave).
Nie. V Kotline sú všetky výnimky unchecked - na rozdiel od Javy nemusíme deklarovať, aké výnimky funkcia môže vyhodiť.
Ak unchecked výnimku nikto neodchytí, program spadne (skončí s chybou).
Áno. To, že sú výnimky unchecked, neznamená, že ich netreba riešiť - iba to, že ich odchytenie nie je kompilátorom vynucované.
Vlastná výnimka môže mať vlastnú popisnú správu odovzdanú do konštruktora rodičovskej triedy Exception.
Áno. Napríklad Exception("Nedostatocny zostatok! Potrebujes $amount EUR") odovzdá vlastnú správu do rodičovského konštruktora.
Delenie celého čísla nulou v Kotline vráti hodnotu Infinity namiesto vyhodenia výnimky.
Nie. Delenie celých čísel (Int) nulou vyhodí ArithmeticException. Infinity vzniká len pri delení desatinných čísel (Double) nulou.
Poradie catch blokov je dôležité - konkrétnejšie výnimky by mali byť odchytené skôr ako všeobecnejšie (napr. Exception).
Áno. Ak by bol prvý všeobecný catch (e: Exception), konkrétnejšie bloky za ním by sa už nikdy nevykonali.
Výnimky by sme mali používať na skutočné chybové stavy, nie na bežné riadenie toku programu.
Áno. Výnimky sú relatívne nákladné a mali by signalizovať výnimočný (chybový) stav, nie sa používať namiesto bežných podmienok.
Tvoje skóre je 0 / 14