Rozdiel medzi začiarknutou výnimkou a výnimkou za behu

Rozdiel medzi začiarknutou výnimkou a výnimkou za behu
Rozdiel medzi začiarknutou výnimkou a výnimkou za behu

Video: Rozdiel medzi začiarknutou výnimkou a výnimkou za behu

Video: Rozdiel medzi začiarknutou výnimkou a výnimkou za behu
Video: Aký je rozdiel medzi profesionálnym rodičom a adopciou? | #profesionalnyrodic 2024, Júl
Anonim

Začiarknutá výnimka verzus výnimka spustenia

Výnimky sú špeciálne typy udalostí, ktoré môžu narušiť normálny priebeh programu. Názov výnimka pochádza z „výnimočnej udalosti“. Vyvolanie výnimky je proces vytvorenia objektu výnimky a jej odovzdania runtime systému. Keď runtime systém prijme objekt výnimky, pokúsi sa nájsť niekoho, kto by ho spracoval v zásobníku hovorov tak, že ho prejde v opačnom poradí (v akom boli volané metódy). Runtime systém je úspešný, ak nájde metódu s obsluhou výnimiek. Obsluha výnimky je blok kódu, ktorý môže oficiálne spracovať uvedenú výnimku. Ak runtime systém nájde vhodný handler, odovzdá objekt výnimky handleru. Toto sa nazýva chytanie výnimky. Ak sa však výnimka nedá spracovať, program sa ukončí. V jazyku Java dedia výnimky z triedy Throwable. Začiarknuté výnimky sú výnimky, pri ktorých je spracovanie vynútené kompilátorom. Výnimky spustenia sú typom výnimiek, ktoré kompilátor nekontroluje.

Čo je to začiarknutá výnimka?

Checked Exceptions sú buď objekty triedy java.lang.exception alebo jej podtriedy (okrem java.lang. RuntimeException a jej podtried). Skontrolované výnimky sú „kontrolované“v čase kompilácie. To znamená, že programátor musí tieto výnimky buď zachytiť alebo vyhodiť, inak by sa kompilácia sťažovala (spôsobila chybu kompilátora). Z tohto dôvodu sú mnohé kontrolované výnimky programátorom veľmi dobre známe. Napríklad IOException a jej podtriedy sú kontrolované výnimky a kedykoľvek sa programátor zaoberá prístupom alebo úpravou súboru, kompilátor skontroluje, či sa programátor postará o všetky možné IOExceptions.

Čo je výnimka spustenia?

Výnimky runtime pozostávajú z java.lang. RuntimeException a všetkých jej podtried. Teoreticky vzaté, slúžia rovnakému účelu ako kontrolované výnimky a môžu byť vyvolané alebo spracované ako kontrolovaná výnimka, ale ich spracovanie nie je vynútené kompilátorom. Preto výnimky Runtime patria do rodiny nekontrolovaných výnimiek. Výnimka NullPointerException, NumberFormatEception, ClassCastException a ArrayIndexOutOfBoundsException sú bežné výnimky v jazyku Java.

Aký je rozdiel medzi začiarknutou výnimkou a výnimkou spustenia?

Aj keď sú kontrolované výnimky aj runtime výnimky neželaným výskytom počas vykonávania programu, majú svoje rozdiely. Spracovanie kontrolovaných výnimiek je vynútené kompilátorom, ale výnimky za behu nie sú. Preto musia byť začiarknuté výnimky vyvolané alebo spracované, aby sa kód skompiloval, ale neexistuje žiadna takáto požiadavka týkajúca sa výnimiek za behu. V dôsledku toho patria výnimky v režime runtime spolu s chybami do kategórie nekontrolovaných výnimiek.

Nevýhodou zaškrtnutých výnimiek je, že programátorka to musí zvládnuť, aj keď nevie ako. Ak teda programátor jednoducho vyvolá novú výnimku bez zabalenia pôvodnej, stopa zásobníka patriaca k pôvodnej výnimke sa stratí. Tu prichádzajú vhod výnimky za behu. Pretože všetky výnimky za behu môžu byť spracované na jednom mieste, programátori tak môžu písať menšie množstvo kódu. Na druhej strane, keďže kontrolované výnimky sa musia podchytiť, pre programátora to nie je žiadne prekvapenie. Vždy bude vedieť, ktorá skontrolovaná výnimka môže byť vyvolaná určitou metódou. Na rozdiel od toho môžu byť rôzne runtime výnimky vyvolané bez vedomia programátora.

Odporúča: