"Throwable" je hlavná trieda tried Chyba a Výnimka. Trieda "RuntimeException" a jej podtriedy, trieda "Chyba" a jej podriadené triedy sú "Nezačiarknuté výnimky", zatiaľ čo zostávajúce podtriedy triedy "Výnimka" okrem "RuntimeException" sú skontrolované výnimky. Základný rozdiel medzi skontrolovanou a nekontrolovanou výnimkou je, že skontrolované výnimky sú kontrolované kompilátorom, zatiaľ čo kompilátor nekontroluje nekontrolované výnimky .
Prediskutujeme ostatné rozdiely medzi skontrolovanými a nekontrolovanými výnimkami pomocou porovnávacej tabuľky.
Porovnávacia tabuľka
Základ pre porovnanie | Kontrola výnimky | Nezahrnutá výnimka |
---|---|---|
základné | Kompilátor skontroluje skontrolovanú výnimku. | Kompilátor nekontroluje výnimku Bez kontroly. |
Trieda výnimky | Okrem triedy "RuntimeException" sú všetky podradené triedy triedy "Výnimka" a trieda "Chyba" a jeho podriadené triedy sú kontrolované výnimkou. | Trieda "RuntimeException" a jej triedy dieťaťa sú "Nekontrolované výnimky". |
zaobchádzanie | Ak sa s kontrolovanou výnimkou nerobíme, objekty kompilátora. | Dokonca aj vtedy, keď nezabezpečíme nekontrolovanú výnimku, kompilátor nevznesie námietku. |
zostavenie | Program nie je kompilovaný, ak je v programovom kóde nepovolená kontrolovaná výnimka. | Program sa úspešne kompiluje aj v prípade, že je v programovom kóde nekontrolovaná nekontrolovaná výnimka. |
Definícia kontrolovanej výnimky
Skontrolované výnimky sú tie výnimky, ktoré kontroluje kompilátor pre hladké vykonanie programu. Kompilátor skontroluje, či program zvládne skontrolovanú výnimku alebo nie. Ak kód nemôže spracovať výnimku, dôjde k chybe kompilácie. Všetky podtriedy triedy "Výnimka" okrem triedy RuntimeException sú skontrolované výnimky.
Preskúmajte skontrolovanú výnimku s príkladom.
import java.io. *; trieda Príklad {public static void main (reťazec args []) {FileInputStream fis = null; fis = nový súbor FileInputStream ("B: /myfile.txt"); // Tento konštruktor FileInputStream (File filename) hodí FileNotFoundException, čo je skontrolovaná výnimka. int k; zatiaľ čo ((k = fis.read ())! = -1) {// Metóda čítať () triedy FileInputStream tiež hodí skontrolovanú výnimku: IOException. System.out.print ((znak) k); } fis.close (); // Metoda close () zatvára vstupný tok súboru, ktorý hodí IOException. }}
Vo vyššie uvedenom kóde sa pokúšame otvoriť, prečítať a zobraziť obsah súboru. Môže sa stať, že súbor nie je prítomný, potom sa vyskytne súbor FileNotFoundException, čo je skontrolovaná výnimka. Ak sa nekontroluje skontrolovaná výnimka, kompilátor neumožní, aby bol program zostavený hladko. Zobrazí sa chyba kompilácie. Pre hladkú kompiláciu musí byť kontrolovaná výnimka zachytená alebo deklarovaná, aby bola vyhodená.
Definícia nekontrolovanej výnimky
Nezahrnuté výnimky sú tie výnimky, ktoré nie sú kontrolované kompilátorom. Kompilátor úspešne kompiluje program aj vtedy, ak sa s výnimkou kódov neriadi. Trieda "Chyba" a jej podradené triedy, trieda "Runtime" a jej podtriedy sú nezačiarknuté výnimky.
Pozrime sa na príklad nekontrolovanej výnimky.
trieda Príklad {public static void main (reťazec args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (ARR [7]); // ArrayIndexOutOfBoundsException. }}
Vo vyššie uvedenom kóde môžete vidieť, že existuje ArrayIndexOutOfBoundsException, pretože sa snažím pristupovať k prvku, ktorý neexistuje. Keďže ide o nekontrolovanú výnimku, nedôjde k chybe kompilácie času a súbor sa bude kompilovať bez chyby. Program sa však nevykoná až do vyriešenia výnimky. Takže kvôli hladkému vykonaniu musia byť výnimky ulovené alebo deklarované, aby boli vyhodené
Kľúčové rozdiely medzi kontrolou a nekontrolovanou výnimkou
- Kontrolované výnimky sú v znalostiach kompilátora, zatiaľ čo nekontrolované výnimky nie sú v znalostiach kompilátora.
- Okrem triedy RuntimeException a Error všetky triedy sú kontrolované výnimkou. Na druhej strane triedy RuntimeException a Error sú nepovolené výnimky.
- Ak skontrolované výnimky nie sú spracované kódom potom objekty kompilátora. Na druhej strane, ak nekontrolujeme nekontrolované výnimky v kóde, kompilátor nevznesie námietku.
- Ak sa v kóde vyskytnú skontrolované výnimky, kód nebude kompilovať, pričom aj keď nekontrolované výnimky nebudú spracované kódom, kompilátor ešte zostaví kód.
Poznámka :
Obe kontrolované alebo nekontrolované výnimky sa povinne vyskytujú počas behu. Konštruktér je skontrolovaný alebo nekontrolovaný iba počas kompilácie.
záver:
Musia sa zaobchádzať s kontrolovanými aj nekontrolovanými výnimkami, aby sa program mohol hladko spustiť.