Rozdíl mezi zaškrtnutou a nekontrolovanou výjimkou

Zpracování výjimek v Javě je jedním z výkonných mechanismů pro řešení specifických chyb, které se vyskytnou v sekvenci kódu za běhu. Výjimkou není nic jiného než chyba runtime, která narušuje normální tok aplikace.

Normálně se vyskytuje v kusu kódu a pokud ano, vytvoří se objekt představující tuto výjimku a hozen v metodě, která to způsobila. V důsledku toho je program nebo aplikace přerušena, což způsobí abnormální ukončení aplikace, což se nedoporučuje. Z tohoto důvodu je třeba tyto výjimky řešit a právě zde se na obrázek objevuje mechanismus zpracování výjimek.

V Javě existují dva typy výjimek - Výjimka zaškrtnutá a Nekontrolovaná. V tomto článku budeme podrobně diskutovat o tom, co je kontrolováno a nezaškrtnuto, a kdy je použít, a nakonec uvidíme rozdíl mezi těmito dvěma.

Co je zaškrtnutá výjimka v Javě?

Toto jsou výjimky, které jsou kontrolovány a zpracovávány při kompilaci. Java definuje několik tříd výjimek uvnitř standardního balíčku java.lang, a nejčastějšími výjimkami jsou podtřídy standardního typu RuntimeException.

Výjimky, které se vyskytují v oblastech mimo bezprostřední kontrolu nad programem, se nazývají kontrolované výjimky. Pokud je to metoda hází zkontrolovaná výjimka v době kompilace, která ji sama nezvládne, pak ji musí zpracovat v a chytit blokovat nebo deklarovat výjimku pomocí hází klíčové slovo, jinak dojde k chybě kompilace. Kompilátor zkoumá typ objektu výjimky pro každý házet a pokud se zobrazí zaškrtnuto, kompilátor zkontroluje zdrojový kód, aby se ujistil, že výjimka je zpracována v metodě, kde je vyvolána nebo je deklarována, takže ji lze dále zpracovat.

Všechny výjimky popsané uživatelem Výjimka které jsou jeho přímými podtřídami kromě RuntimeException se nazývají kontrolované výjimky. Kdy teď použít zaškrtnutou výjimku? Můžete se rozhodnout použít zaškrtnutou výjimku, když přesně víte, co dělat, když Výjimka nastane nebo když je šance na selhání větší. Mezi příklady kontrolovaných výjimek v knihovně Java patří IOException, DataAccessException, IllegalAccessException, InterrupttedException, ClassNotFoundException, InvocationTargetException atd..

Co je nekontrolovaná výjimka v Javě?

Toto jsou výjimky, které nejsou kontrolovány v době kompilace. Nezaškrtnutá výjimka představuje podmínku, která obecně odráží chyby v logice programu a které nelze za běhu obnovit.

Zjednodušeně řečeno, nezaškrtnutá výjimka je výjimka, která není zachycena v a Zkus chytit blok. Nemusejí být výslovně chyceni. Ve skutečnosti, když dojde k nekontrolované výjimce, Java výjimku zpracovává automaticky. Nekontrolované výjimky se nejčastěji vyskytují kvůli programovacím chybám, například při přístupu k prvku mimo propojení polí nebo přístupu k nulovému objektu. V Javě jsou všechny výjimky pod házením kontrolovány výjimky, zatímco výjimky, které jsou přímými podtřídami Chyba a RuntimeException jsou nekontrolované výjimky.

Nejlepší součástí nekontrolované výjimky je to, že nesnižuje čitelnost kódu při zachování čistoty klientského kódu. Mezi příklady nekontrolovaných výjimek patří ArithmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException atd..

Rozdíl mezi zaškrtnutou a nekontrolovanou výjimkou

Definice kontrolované a nekontrolované výjimky

Kontrolovaná a nekontrolovaná výjimka jsou dva typy výjimek v Javě, které zajišťují normální tok aplikace. Obě slouží stejnému účelu, jakým je zpracování výjimek v Javě, a ačkoli neexistuje žádný rozdíl ve funkčnosti, neexistuje jediné pravidlo, které určuje, kdy použít kontrolované a kdy použít nekontrolovanou výjimku. Kontrolovaná výjimka je výjimka, která je kontrolována při kompilaci, zatímco Nekontrolovaná výjimka je ta, která není při kompilaci kontrolována..

Základy kontrolované a nekontrolované výjimky

Kontrolovaná výjimka odkazuje na neplatné scénáře, které se vyskytují mimo bezprostřední kontrolu nad programem, zatímco nezaškrtnutá výjimka se týká chyb v programu nebo chyb v logice programu, které nelze obnovit za běhu.

Zpracování výjimek

Pokud metoda vyvolá zaškrtnutou výjimku, kompilátor zkontroluje, zda metoda zpracovává tuto výjimku pomocí bloku try-catch, nebo specifikuje výjimku pomocí klíčového slova vyvolání. Pokud metoda neposkytuje manipulační kód, zobrazí se chyba kompilace. Naopak, program kompiluje dobře, protože kompilátor nekontroluje nekontrolované výjimky v době kompilace.

Příčina kontrolované a nekontrolované výjimky

Výjimky, které nejsou odvozeny od RunTimeException, se často zpracovávají, zatímco výjimky, které se vyskytují za běhu, se zpracovávají jen zřídka. Kontrolovaná výjimka nastane, když jsou šance na selhání příliš vysoké. Nekontrolovaná výjimka, na druhé straně, nastává většinou kvůli programovacím chybám. Všechny výjimky ve třídách RuntimeException a Error jsou nezaškrtnuté výjimky, zatímco vše ostatní pod házením jsou kontrolovány výjimky.

Příklady kontrolované a nekontrolované výjimky

Některé příklady kontrolovaných výjimek jsou IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException a další. Mezi příklady nekontrolovaných výjimek patří NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException atd..

Kontrolována vs. nekontrolovaná výjimka: Srovnávací tabulka

Shrnutí zaškrtnutých a nekontrolovaných výjimek

Kontrolované a nekontrolované výjimky jsou dva typy výjimek, které existují v Javě. I když je funkčnost pro obě výjimky stejná, mají spravedlivý podíl na rozdílech. Hlavní rozdíl mezi kontrolovanými a nekontrolovanými výjimkami spočívá v tom, že první z nich je zkontrolován kompilátorem, zatímco druhý z nich unikne oznámení o kompilátoru. Výjimky, které jsou kontrolovány a zpracovávány v době kompilace, jsou kontrolované výjimky, zatímco výjimky, které nejsou kontrolovány a zpracovávány v době kompilace, jsou nekontrolované výjimky. Tento článek vysvětluje, co je zaškrtnuto a co je nezaškrtnutá výjimka, kdy je použít, a vysvětluje rozdíl mezi nimi.