logo

„Java“ išimčių tipai

Java, išimtis yra įvykis, kuris įvyksta vykdant programą ir sutrikdo normalų programos komandų eigą. Klaidos ar klaidos, kurių nenorime ir kurios riboja normalų mūsų programos kodo vykdymą, vadinamos išimtis . Šiame skyriuje mes sutelksime dėmesį į „Java“ išimčių tipai ir skirtumai tarp jų.

Išimtys gali būti suskirstytos į dvi kategorijas:

  1. Integruotos išimtys
    • Patikrinta išimtis
    • Nepažymėta išimtis
  2. Vartotojo nustatytos išimtys
„Java“ išimčių tipai

Integruota išimtis

Išimtys kurie jau yra prieinami Java bibliotekos yra vadinami įmontuota išimtis . Šios išimtys gali apibrėžti klaidos situaciją, kad galėtume suprasti šios klaidos priežastį. Jį galima suskirstyti į dvi dideles kategorijas, t.y. patikrintos išimtys ir nepažymėta išimtis .

Patikrinta išimtis

Patikrinta vadinamos išimtys kompiliavimo laikas išimtys, nes šias išimtis kompiliavimo metu tikrina kompiliatorius. Kompiliatorius užtikrina, ar programuotojas tvarko išimtį, ar ne. Programuotojas turėtų susidoroti su išimtimi; kitu atveju sistema parodė kompiliavimo klaidą.

CheckedExceptionExample.java

 import java.io.*; class CheckedExceptionExample { public static void main(String args[]) { FileInputStream file_data = null; file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/Hello.txt'); int m; while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); } } 

Aukščiau pateiktame kode bandome perskaityti Sveiki.txt failą ir ekrane parodykite jo duomenis ar turinį. Programa daro šias išimtis:

  1. The FileInputStream (failo failo pavadinimas) konstruktorius meta FileNotFoundException tai yra pažymėta išimtis.
  2. The skaityti () metodas FileInputStream klasė meta IO išimtis .
  3. The Uždaryti() metodas taip pat meta IOException.

Išvestis:

„Java“ išimčių tipai

Kaip išspręsti klaidą?

Iš esmės yra du būdai, kaip išspręsti šias klaidas.

1) Išimtys pasitaiko pagrindiniame metode. Mes galime atsikratyti šių kompiliavimo klaidų, paskelbdami išimtį pagrindiniame metode metimai Mes skelbiame tik IOException, o ne „FileNotFoundException“ dėl vaikų ir tėvų santykių. IOException klasė yra pagrindinė FileNotFoundException klasė, todėl šią išimtį automatiškai apims IOException. Išimtį paskelbsime tokiu būdu:

repl java
 class Exception{ public static void main(String args[]) throws IOException { ... ... } 

Jei sukompiliuosime ir paleisime kodą, klaidos išnyks ir pamatysime failo duomenis.

„Java“ išimčių tipai

2) Taip pat galime tvarkyti šias išimtis naudodami bandyti-pagauti Tačiau būdas, kurį naudojome aukščiau, nėra teisingas. Turime pateikti prasmingą pranešimą kiekvienam išimties tipui. Tai padarius būtų lengva suprasti klaidą. „Try-catch“ bloką naudosime tokiu būdu:

Išimtis.java

 import java.io.*; class Exception{ public static void main(String args[]) { FileInputStream file_data = null; try{ file_data = new FileInputStream('C:/Users/ajeet/OneDrive/Desktop/programs/Hell.txt'); }catch(FileNotFoundException fnfe){ System.out.println('File Not Found!'); } int m; try{ while(( m = file_data.read() ) != -1) { System.out.print((char)m); } file_data.close(); }catch(IOException ioe){ System.out.println('I/O error occurred: '+ioe); } } } 

Pamatysime tinkamą klaidos pranešimą 'Failas nerastas!' konsolėje, nes toje vietoje tokio failo nėra.

„Java“ išimčių tipai

Nepažymėtos Išimtys

The nepažymėtas išimtys yra priešingos patikrinta išimtis. Kompiliatorius netikrins šių išimčių kompiliavimo metu. Paprastais žodžiais tariant, jei programa pateikia nepažymėtą išimtį ir net jei mes jos neapdorotume ar nepaskelbtume, programa nesukels kompiliavimo klaidos. Paprastai tai atsitinka, kai sąveikaudamas su programa vartotojas pateikia netinkamus duomenis.

Pastaba: „RuntimeException“ klasė gali išspręsti visas nepažymėtas išimtis dėl vaikų ir tėvų santykių.

NepažymėtaExceptionExample1.java

 class UncheckedExceptionExample1 { public static void main(String args[]) { int postive = 35; int zero = 0; int result = positive/zero; //Give Unchecked Exception here. System.out.println(result); } } 

Aukščiau pateiktoje programoje 35 padalijome iš 0. Kodas būtų sėkmingai sukompiliuotas, tačiau vykdymo metu bus rodoma ArithmeticException klaida. Padalijus skaičių iš 0, atsiranda dalijimo iš nulio išimtis, kuri yra išimties žymėjimas.

css lygiuojančius vaizdus

Išvestis:

„Java“ išimčių tipai

UncheckedException1.java

 class UncheckedException1 { public static void main(String args[]) { int num[] ={10,20,30,40,50,60}; System.out.println(num[7]); } } 

Išvestis:

„Java“ išimčių tipai

Aukščiau pateiktame kode mes bandome gauti elementą, esantį 7 pozicijoje, tačiau masyvo ilgis yra 6. Kodas sėkmingai kompiliuojamas, tačiau vykdymo metu išmeta ArrayIndexOutOfBoundsException.

Vartotojo nustatyta išimtis

Į Java , jau turime keletą integruotų išimčių klasių, pvz ArrayIndexOutOfBoundsException , NullPointerException , ir Aritmetinė išimtis . Šios išimtys apsiriboja tam tikromis iš anksto nustatytomis sąlygomis. „Java“ programoje galime parašyti savo išimties klasę išplėsdami „Exception“ klasę. Mes galime pateikti savo išimtį tam tikrai sąlygai naudodami raktinį žodį mesti. Norėdami sukurti vartotojo apibrėžtą išimtį, turėtume turėti pagrindinių žinių apie į bandyti-pagauti blokuoti ir mesti raktažodį .

Parašykime a Java programa ir sukurti vartotojo apibrėžtą išimtį.

UserDefinedException.java

 import java.util.*; class UserDefinedException{ public static void main(String args[]){ try{ throw new NewException(5); } catch(NewException ex){ System.out.println(ex) ; } } } class NewException extends Exception{ int x; NewException(int y) { x=y; } public String toString(){ return ('Exception value = '+x) ; } } 

Išvestis:

„Java“ išimčių tipai

Apibūdinimas:

Aukščiau pateiktame kode sukūrėme dvi klases, t.y. UserDefinedException ir NaujaIšimtis . The UserDefinedException turi mūsų pagrindinį metodą ir NaujaIšimtis klasė yra mūsų vartotojo apibrėžta išimties klasė, kuri plečiasi išimtis . Viduje NaujaIšimtis klasėje, sukuriame kintamąjį x sveikasis skaičius ir priskirti jam reikšmę konstruktoriuje. Priskyrę tam kintamajam reikšmę, grąžiname išimties pranešimą.

java uodega

Viduje UserDefinedException klasėje, pridėjome a bandyti-pagauti blokas. Bandymo skiltyje metame išimtį, t.y. NaujaIšimtis ir perduokite jam sveikąjį skaičių. Reikšmė bus perduota klasei NewException ir bus pateiktas pranešimas. Sugauname tą pranešimą gaudymo bloke ir parodome ekrane.

Skirtumas tarp pažymėtos ir nepažymėtos išimties

Taip ne Patikrinta išimtis Nepažymėta išimtis
1. Šios išimtys tikrinamos kompiliavimo metu. Šios išimtys taip pat tvarkomos kompiliavimo metu. Šios išimtys yra priešingos pažymėtoms išimtims. Šios išimtys nėra tikrinamos ir neapdorojamos kompiliavimo metu.
2. Šios išimtys yra tiesioginiai išimties poklasiai, bet nėra išplėsti iš RuntimeException klasės. Jie yra tiesioginiai „RuntimeException“ klasės poklasiai.
3. Kodas pateikia kompiliavimo klaidą tuo atveju, kai metodas išmeta patikrintą išimtį. Kompiliatorius negali savarankiškai susidoroti su išimtimi. Kodas kompiliuojamas be klaidų, nes kompiliatorius nepastebi išimčių. Šios išimtys yra vartotojo sukurtų programavimo logikos klaidų pasekmės.
4. Šios išimtys dažniausiai pasitaiko, kai gedimo tikimybė yra per didelė. Šios išimtys dažniausiai atsiranda dėl programavimo klaidų.
5. Įprastos patikrintos išimtys yra IOException, DataAccessException, InterruptedException ir kt. Įprastos nepažymėtos išimtys: Aritmetinė išimtis, InvalidClassException, NullPointerException ir kt.
6. Šios išimtys platinamos naudojant raktinį žodį throws. Jie automatiškai padauginami.
7. Norint apdoroti pažymėtą išimtį, būtina pateikti try-catch ir try-finally blokavimą. Nepatikrintos išimties atveju tai nėra privaloma.

Klaidos ar klaidos, kurių nenorime ir riboja įprastą programų vykdymą, vadinamos išimtis .

ArithmeticException, ArrayIndexOutOfBoundExceptions, ClassNotFoundExceptions ir tt patenka į kategoriją Integruota išimtis . Kartais integruotų išimčių nepakanka tam tikroms situacijoms paaiškinti ar apibūdinti. Norėdami apibūdinti šias situacijas, turime sukurti savo išimtis, sukurdami išimčių klasę kaip poklasį Išimtis klasė. Tokio tipo išimtys patenka į kategoriją Vartotojo nustatyta išimtis .