logo

Začiarknuté vs nezačiarknuté výnimky v jazyku Java

V jazyku Java, výnimka je nechcená alebo neočakávaná udalosť, ktorá nastane počas vykonávania programu, t. j. v čase behu, ktorá naruší normálny tok inštrukcií programu.

V jazyku Java existujú dva typy výnimiek:

  1. Skontrolované výnimky
  2. Nezačiarknuté výnimky

Java Checked vs Unchecked Exceptions



Skontrolované výnimky v jazyku Java

Títo sú výnimky, ktoré sa kontrolujú v čase kompilácie. Ak nejaký kód v rámci metódy vyvolá začiarknutú výnimku, potom metóda musí výnimku spracovať alebo musí špecifikovať výnimku pomocou hádže kľúčové slovo . V kontrolovaných výnimkách existujú dva typy: úplne skontrolované a čiastočne skontrolované výnimky. Plne kontrolovaná výnimka je kontrolovaná výnimka, pri ktorej sú kontrolované aj všetky jej podradené triedy, ako napríklad IOException a InterruptedException. Čiastočne začiarknutá výnimka je začiarknutá výnimka, kde niektoré z jej podradených tried nie sú začiarknuté, napríklad výnimka.

Predstavte si napríklad nasledujúci program Java, ktorý otvorí súbor v umiestnení C: esta.txt a vytlačí jeho prvé tri riadky. Program sa neskompiluje, pretože funkcia main() používa FileReader() a FileReader() vyvoláva začiarknutú výnimku FileNotFoundException . Používa tiež metódy readLine() a close() a tieto metódy tiež vyvolávajú kontrolovanú výnimku IOException

Príklad:

Java




// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException occurred> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Reading file from path in local directory> >FileReader file =>new> FileReader(>'C: esta.txt'>);> >// Creating object as one of ways of taking input> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing file connections> >// using close() method> >fileInput.close();> >}> }>

>

statické kľúčové slovo v jazyku Java

>

Výkon:

Výstup výnimky Java Checked

Na opravu vyššie uvedeného programu musíme buď špecifikovať zoznam výnimiek pomocou throws, alebo musíme použiť blok try-catch. V nižšie uvedenom programe sme použili hody. Od r FileNotFoundException je podtriedou IOException , môžeme len upresniť IOException v zozname hodov a urobte z vyššie uvedeného programu bez chýb kompilátora.

Príklad:

inak java

Java




// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException does not occur> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >throws> IOException> >{> >// Creating a file and reading from local repository> >FileReader file =>new> FileReader(>'C: esta.txt'>);> >// Reading content inside a file> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing all file connections> >// using close() method> >// Good practice to avoid any memory leakage> >fileInput.close();> >}> }>

>

>

Výkon:

First three lines of file 'C:	esta.txt'>

Nezačiarknuté výnimky v jazyku Java

Toto sú výnimky, ktoré nie sú kontrolované v čase kompilácie. V C++ nie sú všetky výnimky začiarknuté, takže kompilátor nie je nútený spracovať alebo špecifikovať výnimku. Je na programátoroch, aby boli civilizovaní a špecifikovali alebo vychytali výnimky. V Jave platia výnimky pod Chyba a RuntimeException triedy sú nezaškrtnuté výnimky, všetko ostatné pod throwable je kontrolované.

Zvážte nasledujúci program Java. Kompiluje sa v pohode, ale hádže Aritmetická výnimka pri behu. Kompilátor umožňuje kompilovať, pretože Aritmetická výnimka je nekontrolovaná výnimka.

Príklad:

Java




// Java Program to Illustrate Un-checked Exceptions> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Here we are dividing by 0> >// which will not be caught at compile time> >// as there is no mistake but caught at runtime> >// because it is mathematically incorrect> >int> x =>0>;> >int> y =>10>;> >int> z = y / x;> >}> }>

>

unsigned int c programovanie

>

Výkon

Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>

Stručne povedané, nekontrolované výnimky sú výnimky za behu, ktoré nemusia byť zachytené alebo deklarované v klauzule throws. Tieto výnimky sú zvyčajne spôsobené chybami programovania, ako je pokus o prístup k indexu mimo hraníc v poli alebo pokus o delenie nulou.

Nekontrolované výnimky zahŕňajú všetky podtriedy triedy RuntimeException, ako aj triedu Error a jej podtriedy.

Tu je niekoľko príkladov nekontrolovaných výnimiek v jazyku Java:

1. Výnimka ArrayIndexOutOfBounds: Táto výnimka sa vyvolá pri pokuse o prístup k indexu poľa, ktorý je mimo hraníc.
2. Výnimka NullPointer: Táto výnimka sa vyvolá pri pokuse o prístup k odkazu na nulový objekt.
3. Aritmetická výnimka: Táto výnimka sa vyvolá, keď sa pokúsite deliť nulou alebo vykonáte neplatnú aritmetickú operáciu.