Java, išimtis yra nepageidaujamas arba netikėtas įvykis, įvykęs programos vykdymo metu, t. y. vykdymo metu, sutrikdantis įprastą programos komandų eigą.
„Java“ yra dviejų tipų išimtys:
- Patikrintos išimtys
- Nepažymėtos išimtys

Patikrintos „Java“ išimtys
Šie yra išimtys, kurios tikrinamos kompiliavimo metu. Jei koks nors metodo kodas išmeta pažymėtą išimtį, metodas turi apdoroti išimtį arba nurodyti išimtį naudodamas metimai raktažodį . Patikrintos išimtys yra dviejų tipų: visiškai patikrintos ir iš dalies patikrintos išimtys. Visiškai patikrinta išimtis yra patikrinta išimtis, kai taip pat tikrinamos visos antrinės klasės, pvz., IOException ir InterruptedException. Iš dalies pažymėta išimtis yra pažymėta išimtis, kai kai kurios antrinės klasės yra nepažymėtos, pvz., Išimtis.
Pavyzdžiui, apsvarstykite šią „Java“ programą, kuri atidaro failą vietoje C: esta.txt ir išspausdina pirmas tris jo eilutes. Programa nekompiliuoja, nes funkcija main() naudoja FileReader(), o FileReader() meta pažymėtą išimtį FileNotFoundException . Jis taip pat naudoja readLine () ir close () metodus, o šie metodai taip pat pateikia patikrintą išimtį IO išimtis
Pavyzdys:
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();> >}> }> |
>
>
Išvestis:

Norėdami pataisyti aukščiau pateiktą programą, turime arba nurodyti išimčių sąrašą naudodami metimus, arba turime naudoti try-catch bloką. Mes naudojome metimus žemiau esančioje programoje. Nuo FileNotFoundException yra poklasis IO išimtis , galime tik nurodyti IO išimtis metimų sąraše ir padarykite aukščiau pateiktą programos kompiliatorių be klaidų.
Pavyzdys:
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();> >}> }> |
>
>
Išvestis:
First three lines of file 'C: esta.txt'>
Nepažymėtos „Java“ išimtys
Tai yra išimtys, kurios nėra tikrinamos kompiliavimo metu. C++ kalboje visos išimtys nepažymėtos, todėl kompiliatorius neverčia nei tvarkyti, nei nurodyti išimties. Programišiai turi būti civilizuoti ir nurodyti ar sugauti išimtis. Java, išimtys pagal Klaida ir RuntimeException klasės yra nepažymėtos išimtys, visa kita po metamais yra pažymėta.
Apsvarstykite šią „Java“ programą. Kompiliuoja gerai, bet meta Aritmetinė išimtis kai bėga. Kompiliatorius leidžia kompiliuoti, nes Aritmetinė išimtis yra nekontroliuojama išimtis.
Pavyzdys:
Java
rinkiniai 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;> >}> }> |
>
>
Išvestis
Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>
Trumpai tariant, nepažymėtos išimtys yra vykdymo laiko išimtys, kurių nebūtina sugauti arba paskelbti metimų sąlygoje. Šias išimtis dažniausiai sukelia programavimo klaidos, pvz., bandymas pasiekti indeksą už masyvo ribų arba bandymas padalyti iš nulio.
Nepažymėtos išimtys apima visus RuntimeException klasės poklasius, taip pat klasę Error ir jos poklasius.
Štai keletas nepažymėtų „Java“ išimčių pavyzdžių:
1. „ArrayIndexOutOfBoundsException“: Ši išimtis atsiranda, kai bandote pasiekti masyvo indeksą, kuris yra už ribų.
2. NullPointerException: Ši išimtis išmetama, kai bandote pasiekti nulinio objekto nuorodą.
3. Aritmetinė išimtis: Ši išimtis rodoma, kai bandote padalyti iš nulio arba atlikti neteisingą aritmetinę operaciją.