Doporučená, 2024

Redakce Choice

Rozdíl mezi zaškrtnutými a nekontrolovanými výjimkami v jazyce Java

„Throwable“ je rodičovská třída tříd Error a Exception. Třída „RuntimeException“ a její podtřídy, třída „Error“ a její podřízené třídy, jsou „Nezkontrolované výjimky“, zatímco zbývající podtřídy třídy „Exception“ kromě „RuntimeException“ jsou kontrolované výjimky. Základní rozdíl mezi zaškrtnutou a nekontrolovanou výjimkou je, že kontrolované výjimky jsou kontrolovány kompilátorem, zatímco kompilátor nekontroluje nekontrolované výjimky .

Srovnejme další rozdíly mezi kontrolovanými a nekontrolovanými výjimkami pomocí srovnávací tabulky.

Srovnávací graf

Základ pro porovnáníZaškrtnutá výjimkaNezaškrtnutá výjimka
ZákladníKompilátor zkontroluje kontrolovanou výjimku.Kompilátor nekontroluje výjimku Nezaškrtnuto.
Třída výjimkyKromě třídy "RuntimeException" jsou všechny podřízené třídy třídy "Výjimka" a třída "Chyba" a její podřízené třídy zaškrtnuty.Třída "RuntimeException" a její podřízené třídy jsou "Nezaškrtnuté výjimky".
ZacházeníPokud nezaškrtneme kontrolovanou výjimku, pak kompilátor objekty.I když nezaškrtneme nezaškrtnutou výjimku, kompilátor nemá námitky.
SestaveníProgram není zkompilován, pokud je v kódu programu neošetřená kontrolovaná výjimka.Program úspěšně zkompiluje i v případě, že v kódu programu je neošetřená výjimka.

Definice kontrolované výjimky

Kontrolovanými výjimkami jsou výjimky, které kompilátor kontroluje pro hladký průběh programu. Kompilátor zkontroluje, zda program může zpracovat kontrolovanou výjimku nebo ne. Pokud kód nemůže zpracovat výjimku, dojde k chybě kompilace. Kontrolovanými výjimkami jsou všechny podtřídy třídy „Výjimka“ s výjimkou třídy RuntimeException.
Podívejme se na kontrolovanou výjimku příkladem.

 import java.io. *; class Příklad {public static void main (String args []) {FileInputStream fis = null; fis = new FileInputStream ("B: /myfile.txt"); // Tento konstruktor FileInputStream (File filename) vyvolá FileNotFoundException, což je kontrolovaná výjimka. int k; while ((k = fis.read ())! = -1) {// Metoda read () třídy FileInputStream také vyvolá kontrolovanou výjimku: IOException. System.out.print ((char) k); } fis.close (); // Metoda close () zavře vstupní tok souboru, který vyvolá IOException. }} 

Ve výše uvedeném kódu se snažíme otevřít, číst a zobrazovat obsah souboru. Může se stát, že soubor není přítomen, potom dojde k FileNotFoundException, což je kontrolovaná výjimka. Pokud není zaškrtnutá výjimka zpracována, kompilátor nedovolí, aby byl program kompilován hladce. Zobrazí chybu při kompilaci. Pro hladkou kompilaci musí být kontrolovaná výjimka zachycena nebo prohlášena za hozenou.

Definice nekontrolované výjimky

Nezaškrtnuté Výjimky jsou výjimky, které kompilátor nekontroluje. Kompilátor úspěšně zkompiluje program, i když tyto výjimky kód nezpracovává. Třída „Error“ a její podřízené třídy, třída „Runtime“ a její podtřídy, jsou nekontrolovanými výjimkami.

Podívejme se na příklad nekontrolované výjimky.

 třída Příklad {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }} 

Ve výše uvedeném kódu můžete vidět, že existuje ArrayIndexOutOfBoundsException, protože se pokouším o přístup k prvku, který neexistuje. Protože se jedná o nekontrolovanou výjimku, chyba kompilace se nevyskytne a soubor bude zkompilován bez jakékoli chyby. Program se však nespustí, dokud nebude provedena výjimka. Pro hladké provedení musí být výjimky zachyceny nebo prohlášeny za vyhozené

Klíčové rozdíly mezi zkontrolovanou a nezaškrtnutou výjimkou

  1. Kontrolované výjimky jsou ve znalostech kompilátoru, zatímco nekontrolované výjimky nejsou ve znalostech kompilátoru.
  2. Kromě třídy RuntimeException a Error jsou všechny třídy kontrolovány výjimkou. Na druhou stranu, třídy RuntimeException a Error jsou nekontrolované výjimky.
  3. Pokud kontrolované výjimky nejsou zpracovány kódem pak kompilátor objekty. Na druhou stranu, pokud nezvládneme nezaškrtnuté výjimky v kódu, kompilátor nemá námitky.
  4. Pokud se v kódu vyskytnou zkontrolované výjimky, kód se nebude kompilovat, zatímco i když nezaškrtnuté výjimky nejsou zpracovávány kódem, kompilátor stále kompiluje kód.

Poznámka :

Během runtime se povinně vyskytne zaškrtnutá i nezaškrtnutá výjimka. Kompilátor kontroluje nebo kontroluje pouze během kompilace.

Závěr:

Aby bylo možné program provádět hladce, musí být zpracovány jak kontrolované, tak nezaškrtnuté výjimky.

Top