există două tipuri de excepții: excepție verificată și excepție necontrolată. În acest ghid, le vom discuta. Principala diferență între excepția verificată și cea necontrolată este că excepțiile verificate sunt verificate la compilare, în timp ce excepțiile necontrolate sunt verificate la rulare.
care sunt excepțiile verificate?
excepțiile verificate sunt verificate la momentul compilării., Înseamnă că dacă o metodă aruncă o excepție verificată, atunci ar trebui să se ocupe de excepție folosind blocul try-catch sau ar trebui să declare excepția folosind cuvântul cheie throws, altfel programul va da o eroare de compilare.
să înțelegem acest lucru cu ajutorul unui exemplu:
exemplu de excepție verificat
în acest exemplu citim fișierul myfile.txt
și afișăm conținutul său pe ecran. În acest program există trei locuri în care o excepție verificată este aruncată așa cum se menționează în comentariile de mai jos., FileInputStream care este utilizat pentru specificarea calea fișierului și numele, aruncă FileNotFoundException
. Metoda read () care citește conținutul fișierului aruncă IOException
și metoda close() care închide fluxul de intrare a fișierului aruncă și IOException
.
ieșire:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: Unhandled exception type FileNotFoundExceptionUnhandled exception type IOExceptionUnhandled exception type IOException
De ce această eroare de compilare? Așa cum am menționat la început că excepțiile verificate sunt verificate în timpul compilării. Deoarece nu am gestionat / declarat excepțiile, programul nostru a dat eroarea de compilare.
Cum se rezolvă eroarea?, Există două modalități de a evita această eroare. Vom vedea ambele căi unul câte unul.
Metoda 1: declarați excepția folosind cuvinte cheie aruncări.
după cum știm că toate cele trei apariții de excepții verificate sunt în interiorul main() metoda astfel încât o modalitate de a evita eroarea de compilare este: declarați excepția în metoda folosind cuvinte cheie aruncă. S-ar putea să vă gândiți că codul nostru aruncă FileNotFoundException și IOException atât de aceea declarăm IOException singur. Motivul este că IOException este o clasă părinte a FileNotFoundException, deci în mod implicit acoperă asta., Dacă doriți, le puteți declara astfel public static void main(String args) throws IOException, FileNotFoundException
.
ieșire:
conținutul fișierului este afișat pe ecran.metoda 2: manipulați-le folosind blocuri try-catch.
abordarea pe care am folosit-o mai sus nu este deloc bună. Nu este cea mai bună practică de manipulare excepție. Ar trebui să dea mesaj semnificativ pentru fiecare tip de excepție, astfel încât ar fi ușor pentru cineva să înțeleagă eroarea. Codul ar trebui să fie astfel:
acest cod va rula bine și va afișa conținutul fișierului.,
Aici sunt câteva alte Verificat Excepții –
SQLException
IOException
ClassNotFoundException
InvocationTargetException
Ce sunt verificate și excepții?
excepțiile necontrolate nu sunt verificate la momentul compilării. Înseamnă că dacă programul dvs. aruncă o excepție necontrolată și chiar dacă nu ați gestionat/declarat această excepție, programul nu va da o eroare de compilare. De cele mai multe ori aceste excepții apar din cauza datelor proaste furnizate de utilizator în timpul interacțiunii utilizator-program., Depinde de programator să judece condițiile în avans, ceea ce poate provoca astfel de excepții și să le trateze în mod corespunzător. Toate excepțiile necontrolate sunt subclase directe ale clasei RuntimeException.
să înțelegem acest lucru cu un exemplu:
exemplu de excepție necontrolat
dacă compilați acest cod, S-ar compila cu succes cu toate acestea, atunci când îl va rula, ar arunca ArithmeticException
. Acest lucru arată în mod clar că excepțiile necontrolate nu sunt verificate la compilare, ele apar în timpul rulării. Să vedem un alt exemplu.,
acest cod ar compila, de asemenea, cu succes, deoarece ArrayIndexOutOfBoundsException
este, de asemenea, o excepție necontrolată.
Notă: nu înseamnă că compilatorul nu verifică aceste excepții, așa că nu ar trebui să le gestionăm. De fapt, ar trebui să le tratăm mai atent. De exemplu, în exemplul de mai sus ar trebui să existe un mesaj de excepție către utilizator că încearcă să afișeze o valoare care nu există în matrice, astfel încât utilizatorul să poată corecta problema.,
Output:
The specified index does not exist in array. Please correct the error.
Here are the few unchecked exception classes:
NullPointerException
ArrayIndexOutOfBoundsException
ArithmeticException
IllegalArgumentException
NumberFormatException