Rozdíl Mezi Kontrolovanou Výjimkou A Výjimkou Za Běhu

Rozdíl Mezi Kontrolovanou Výjimkou A Výjimkou Za Běhu
Rozdíl Mezi Kontrolovanou Výjimkou A Výjimkou Za Běhu

Video: Rozdíl Mezi Kontrolovanou Výjimkou A Výjimkou Za Běhu

Video: Rozdíl Mezi Kontrolovanou Výjimkou A Výjimkou Za Běhu
Video: 40 Year Vegan Dies of a Heart Attack! The Omega-3 and B12 Myth with Dr. Michael Greger High Quality 2024, Duben
Anonim

Zaškrtnutá výjimka vs Runtime výjimka

Výjimky představují speciální typ událostí, které mohou narušit normální průběh programu. Výjimka názvu pochází z „výjimečné události“. Vyvolání výjimky je proces vytváření objektu výjimky a jeho předání runtime systému. Když runtime systém přijme objekt výjimky, pokusí se najít někoho, kdo by jej zpracoval v zásobníku volání, a to tak, že jej projde v opačném pořadí (ve kterém byly metody volány). Běhový systém je úspěšný, pokud najde metodu s obslužnou rutinou výjimky. Obslužná rutina výjimky je blok kódu, který může oficiálně zpracovat uvedenou výjimku. Pokud běhový systém najde vhodnou obslužnou rutinu, předá objekt výjimky obslužné rutině. Tomu se říká chytání výjimky. Pokud však výjimku nelze zpracovat, program se ukončí. V Javěvýjimky dědí z třídy Throwable. Zaškrtnuté výjimky jsou výjimky, u nichž je vynucení manipulace vynuceno kompilátorem. Výjimky za běhu jsou typem výjimek, které kompilátor nekontroluje.

Co je to zaškrtnutá výjimka?

Zaškrtnuté výjimky jsou buď objekty třídy java.lang.exception, nebo její podtřídy (kromě java.lang. RuntimeException a jejích podtříd). Zkontrolované výjimky jsou „zkontrolovány“v době kompilace. To znamená, že programátor musí tyto výjimky buď chytit, nebo vyhodit, jinak by si kompilace stěžovala (což způsobilo chybu kompilátoru). Z tohoto důvodu je mnoho kontrolovaných výjimek programátorům velmi dobře známo. Například IOException a jeho podtřídy jsou kontrolovány výjimky a kdykoli se programátor zabývá přístupem nebo úpravou souboru, kompilátor zkontroluje, zda se o všechny možné IOExceptions postará programátor.

Co je to runtime výjimka?

Výjimky za běhu se skládají z java.lang. RuntimeException a všech jejích dílčích tříd. Teoreticky řečeno, slouží stejnému účelu jako kontrolované výjimky a lze je vyvolávat nebo zpracovávat jako kontrolovaná výjimka, ale manipulace s nimi není vynucena kompilátorem. Výjimky za běhu proto patří do rodiny nekontrolovaných výjimek. NullPointerException, NumberFormatEception, ClassCastException a ArrayIndexOutOfBoundsException jsou běžné výjimky za běhu v Javě.

Jaký je rozdíl mezi zaškrtnutou výjimkou a runtime výjimkou?

I když jsou jak kontrolované výjimky, tak runtime výjimky nežádoucím výskytem během provádění programu, mají své rozdíly. Kontrolované zpracování výjimek je vynuceno kompilátorem, ale výjimky za běhu nejsou. Proto musí být zaškrtnuté výjimky vyvolány nebo zpracovány, aby se kód mohl kompilovat, ale neexistuje žádný takový požadavek týkající se runtime výjimek. V důsledku toho patří runtime výjimky do nekontrolované kategorie výjimek spolu s chybami.

Nevýhodou kontrolovaných výjimek je, že programátorka to musí zvládnout, i když neví, jak na to. Takže pokud programátor pouze hodí novou výjimku bez zabalení původní, bude stopa zásobníku patřící k původní výjimce ztracena. To je místo, kde se hodí runtime výjimky. Protože všechny runtime výjimky lze zpracovat na jednom místě, programátoři tak mohou zapisovat menší množství kódu. Na druhou stranu, protože musí být zachyceny kontrolované výjimky, není pro programátora žádné překvapení. Vždy bude vědět, která kontrolovaná výjimka by mohla být vyvolána určitou metodou. Na rozdíl od toho lze bez vědomí programátora vyvolat různé runtime výjimky.

Doporučená: