"Throwable" este clasa parentală a clasei Error and Exception. Clasa "RuntimeException" și subclasele sale, clasa "Eroare" și clasele sale copil sunt "excepțiile necontrolate", în timp ce restul subclaselor din clasa "Excepție" cu excepția "RuntimeException" sunt excepțiile verificate. Diferența de bază dintre excepția verificată și cea necontrolată este că excepțiile verificate sunt verificate de compilator, în timp ce compilatorul nu verifică excepțiile necontrolate .
Să discutăm celelalte diferențe dintre excepțiile verificate și cele necontrolate cu ajutorul graficului comparativ.
Diagramă de comparație
Bazele comparației | Excepție verificată | Excepție necontrolată |
---|---|---|
De bază | Compilatorul verifică excepția verificată. | Compilatorul nu verifică excepția Unchecked. |
Clasă de excepție | Cu excepția clasei "RuntimeException", toate clasele copilului din clasa "Excepție", iar clasa "Eroare" și clasele sale copil sunt verificate. | Clasa "RuntimeException" și clasele copilului său sunt "Excepții necontrolate". |
Manipularea | Dacă nu rezolvăm excepția verificată, atunci obiectele compilatorului. | Chiar dacă nu facem față excepției neconfirmate, compilatorul nu obiectă. |
Compilare | Programul nu se compilează dacă există o excepție verificată neschimbată în codul programului. | Programul se compilează cu succes chiar și în cazul în care există o excepție neconfirmată necomandată în codul programului. |
Definiția excepției verificate
Excepțiile verificate sunt acele excepții verificate de compilator pentru executarea fără probleme a programului. Compilatorul verifică dacă programul poate gestiona excepția verificată sau nu. Dacă codul nu poate gestiona excepția, apare o eroare de compilare. Toate subclasele clasei "Excepție", cu excepția clasei RuntimeException, sunt excepțiile bifate.
Să studiem excepția verificată cu un exemplu.
import java.io. *; class Exemplu {public static void main (String args []) {FileInputStream fis = null; Fisier nou FileInputStream ("B: /myfile.txt"); // Acest constructor FileInputStream (File filename) aruncă FileNotFoundException, care este o excepție verificată. int k; în timp ce ((k = fis.read ())! = -1) {// Metoda read () din clasa FileInputStream aruncă o excepție verificată: IOException. System.out.print ((char) k); } fis.close (); // Metoda close () închide fluxul de intrare al fișierului pe care îl aruncă IOException. }}
În codul de mai sus, încercăm să deschidem, să citim și să afișăm conținutul fișierelor. Se poate întâmpla ca fișierul să nu fie prezent, apoi va apărea FileNotFoundException, care este o excepție verificată. Dacă excepția verificată nu este tratată, atunci compilatorul nu va permite ca programul să fie compilat fără probleme. Acesta va afișa eroarea de compilare a timpului. Astfel, pentru o compilație fără probleme, excepția verificată trebuie să fie prinsă sau declarată a fi aruncată.
Definiția Unchecked Exception
Excepțiile necontrolate sunt acele excepții care nu sunt verificate de compilator. Compilatorul compilează programul cu succes, chiar dacă excepțiile nu sunt gestionate de cod. Clasa "Eroare" și clasele sale copil, clasa "Runtime" și subclasele sale sunt excepțiile necontrolate.
Să vedem un exemplu de excepție neconfirmată.
class Exemplu {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); //Indicele matricei este în afara limitelor. }}
În codul de mai sus, puteți vedea că există o ArrayIndexOutOfBoundsException, deoarece încerc să accesez elementul care nu există. Deoarece aceasta este o excepție neconfirmată, eroarea de timp de compilare nu va apărea și fișierul va fi compilat fără nici o eroare. Dar programul nu va fi executat până când excepția nu este rezolvată. Deci, pentru o execuție ușoară, excepțiile trebuie să fie prinse sau declarate a fi aruncate
Diferențe cheie între excepția verificată și cea necontrolată
- Excepțiile verificate sunt în cunoașterea compilatorului, în timp ce excepțiile necontrolate nu sunt în cunoașterea compilatorului.
- În afara clasei RuntimeException și Error, toate clasele sunt excepții verificate. Pe de altă parte, clasele RuntimeException și Error sunt excepții necontrolate.
- Dacă excepțiile verificate nu sunt tratate de cod, atunci obiectele compilatorului. Pe de altă parte, dacă nu rezolvăm excepțiile necontrolate din cod, compilatorul nu obiectează.
- Dacă se înregistrează excepții în cod, codul nu va fi compilat, în timp ce, chiar dacă excepțiile necontrolate nu sunt tratate de cod, compilatorul compilează încă codul.
Notă :
Atât excepția verificată, cât și cea neconfirmată au loc în mod obligatoriu în timpul rulării. Acestea sunt verificate sau nu verificate de compilator în timpul procesului de compilare.
Concluzie:
Atât excepțiile verificate, cât și cele necontrolate trebuie tratate pentru a executa programul fără probleme.