V Javi, Izjema je nezaželen ali nepričakovan dogodek, ki se zgodi med izvajanjem programa, to je v času izvajanja, ki zmoti normalen tok navodil programa.
V Javi obstajata dve vrsti izjem:
- Preverjene izjeme
- Nepreverjene izjeme

Preverjene izjeme v Javi
te so izjeme, ki se preverijo v času prevajanja. Če neka koda v metodi vrže preverjeno izjemo, mora metoda obravnavati izjemo ali pa podati izjemo z uporabo vrže ključna beseda . Pri preverjenih izjemah obstajata dve vrsti: popolnoma preverjene in delno preverjene izjeme. Popolnoma preverjena izjema je preverjena izjema, pri kateri so preverjeni tudi vsi njeni podrejeni razredi, na primer IOException in InterruptedException. Delno preverjena izjema je preverjena izjema, kjer nekateri njeni podrejeni razredi niso preverjeni, kot je izjema.
Na primer, razmislite o naslednjem programu Java, ki odpre datoteko na lokaciji C: esta.txt in natisne njene prve tri vrstice. Program se ne prevaja, ker funkcija main() uporablja FileReader(), FileReader() pa vrže preverjeno izjemo FileNotFoundException . Uporablja tudi metodi readLine() in close(), ti metodi pa vržeta tudi preverjeno izjemo IOException
primer:
Java
enako 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();> >}> }> |
>
>
Izhod:

Če želite popraviti zgornji program, moramo bodisi določiti seznam izjem z vrzi ali pa moramo uporabiti blok poskusi-ulovi. V spodnjem programu smo uporabili mete. Od FileNotFoundException je podrazred IOException , lahko samo določimo IOException na seznam vrgov in naredite zgornji program prevajalnik brez napak.
primer:
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();> >}> }> |
>
>
10 1 milijon
Izhod:
First three lines of file 'C: esta.txt'>
Nepreverjene izjeme v Javi
To so izjeme, ki niso preverjene v času prevajanja. V C++ so vse izjeme nepreverjene, zato ga prevajalnik ne prisili, da obravnava ali določi izjemo. Na programerjev je, da so civilizirani in določijo ali ujamejo izjeme. V Javi so izjeme pod Napaka in RuntimeException razredi so nepreverjene izjeme, vse ostalo pod možnostjo metanja je preverjeno.
Razmislite o naslednjem programu Java. Dobro se prevaja, vendar vrže ArithmeticException pri teku. Prevajalnik omogoča prevajanje, ker ArithmeticException je nepreverjena izjema.
primer:
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;> >}> }> |
>
>
Izhod
Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>
Na kratko, nepreverjene izjeme so izjeme med izvajanjem, ki jih ni treba prestreči ali prijaviti v klavzuli vrženja. Te izjeme običajno povzročijo programske napake, kot je poskus dostopa do indeksa izven meja v matriki ali poskus deljenja z ničlo.
Nepreverjene izjeme vključujejo vse podrazrede razreda RuntimeException ter razred Error in njegove podrazrede.
Tukaj je nekaj primerov nepreverjenih izjem v Javi:
1. ArrayIndexOutOfBoundsException: Ta izjema se vrže, ko poskušate dostopati do indeksa polja, ki je izven meja.
2. Izjema NullPointerException: Ta izjema se vrže, ko poskušate dostopati do sklica na ničelni objekt.
3. ArithmeticException: Ta izjema se vrže, ko poskušate deliti z nič ali izvedete neveljavno aritmetično operacijo.