logo

Excepții verificate vs neverificate în Java

În Java, excepție este un eveniment nedorit sau neașteptat, care are loc în timpul execuției unui program, adică în timpul rulării, care perturbă fluxul normal al instrucțiunilor programului.

În Java, există două tipuri de excepții:



  1. Excepții verificate
  2. Excepții nebifate

Java verificat vs excepții neverificate

Excepții verificate în Java

Aceste sunt excepțiile care sunt verificate în timpul compilării. Dacă un cod dintr-o metodă aruncă o excepție bifată, atunci metoda trebuie fie să gestioneze excepția, fie trebuie să specifice excepția folosind aruncări cuvânt cheie . În excepțiile verificate, există două tipuri: excepții complet verificate și excepții parțial verificate. O excepție complet verificată este o excepție verificată în care toate clasele sale copil sunt, de asemenea, verificate, cum ar fi IOException și InterruptedException. O excepție parțial verificată este o excepție verificată în care unele dintre clasele sale secundare sunt nebifate, cum ar fi o excepție.

De exemplu, luați în considerare următorul program Java care deschide fișierul în locația C: esta.txt și imprimă primele trei rânduri ale acestuia. Programul nu se compila, deoarece funcția main() folosește FileReader(), iar FileReader() aruncă o excepție bifată FileNotFoundException . De asemenea, folosește metode readLine() și close(), iar aceste metode aruncă și excepții verificate IOException



Exemplu:

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();> >}> }>

>

>

Actorul Rekha

Ieșire:

Ieșirea excepției Java Checked

Pentru a remedia programul de mai sus, fie trebuie să specificăm o listă de excepții folosind throws, fie trebuie să folosim un bloc try-catch. Am folosit aruncări în programul de mai jos. De cand FileNotFoundException este o subclasă a IOException , putem doar să precizăm IOException în lista de aruncări și faceți compilatorul programului de mai sus fără erori.

Exemplu:

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();> >}> }>

imagine de reducere

>

>

Ieșire:

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

Excepții nebifate în Java

Acestea sunt excepțiile care nu sunt verificate în timpul compilării. În C++, toate excepțiile sunt debifate, deci nu este forțat de compilator să gestioneze sau să specifice excepția. Este la latitudinea programatorilor să fie civilizați și să precizeze sau să prindă excepțiile. În Java, excepții sub Eroare și RuntimeException clasele sunt excepții nebifate, tot ce se află sub throwable este verificat.

Luați în considerare următorul program Java. Compilează bine, dar aruncă ArithmeticException când alerga. Compilatorul îi permite compilarea deoarece ArithmeticException este o excepție neverificată.

Exemplu:

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;> >}> }>

>

.04 sub formă de fracție

>

Ieșire

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

Pe scurt, excepțiile neverificate sunt excepții de rulare care nu trebuie să fie capturate sau declarate într-o clauză throws. Aceste excepții sunt de obicei cauzate de erori de programare, cum ar fi încercarea de a accesa un index în afara limitelor dintr-o matrice sau încercarea de a împărți la zero.

Excepțiile nebifate includ toate subclasele clasei RuntimeException, precum și clasa Error și subclasele acesteia.

Iată câteva exemple de excepții neverificate în Java:

1. ArrayIndexOutOfBoundsException: Această excepție este aruncată atunci când încercați să accesați un index de matrice care este în afara limitelor.
2. NullPointerException: Această excepție este aruncată atunci când încercați să accesați o referință de obiect nulă.
3. ArithmeticException: Această excepție este aruncată atunci când încercați să împărțiți la zero sau să efectuați o operație aritmetică nevalidă.