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:
- Skontrolované výnimky
- Nezačiarknuté výnimky

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:

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.