Excepție excepțională excepție excepție la runtime
Excepțiile sunt tipuri speciale de evenimente, care pot perturba fluxul normal al programului. Excepția numelui provine de la "eveniment excepțional". Aruncarea unei excepții este procesul de creare a unui obiect excepțional și predarea lui către sistemul de rulare. Când sistemul de executare primește obiectul excepțional, acesta va încerca să găsească pe cineva care să o manipuleze în sala de apel prin traversarea acestuia în ordinea inversă (în care au fost apelate metodele). Sistemul runtime are succes dacă găsește o metodă cu un handler de excepție. Excepție de manipulare este un bloc de cod care se poate ocupa oficial excepția menționată. Dacă sistemul runtime găsește un handler adecvat, acesta va transmite obiectul de excepție către manipulant. Aceasta se numește capturarea excepției. Cu toate acestea, dacă excepția nu poate fi rezolvată, programul se va termina. În Java, excepțiile sunt moștenite din clasa Throwable. Excepțiile verificate sunt excepții în privința cărora compilarea este aplicată de manipulare. Excepțiile runtime sunt un tip de excepții, care nu sunt verificate de către compilator.
Ce este o excepție verificată?
Excepțiile verificate sunt fie obiecte din clasa java.lang.exception, fie subclasele sale (cu excepția java.lang.RuntimeException și subclasele sale). Excepțiile verificate sunt "verificate" la momentul compilării. Aceasta înseamnă că programatorul trebuie să captureze sau să arunce aceste excepții, altfel compilația s-ar plânge (provocând o eroare de compilator). Din acest motiv, multe excepții verificate sunt foarte bine cunoscute de programatori. De exemplu, IOException și subclasele sale sunt excepții verificate și, ori de câte ori programatorul se ocupă de accesarea sau modificarea unui fișier, compilatorul verifică pentru a se asigura că toate eventualele IOExcepții sunt preluate de programator.
Ce este o excepție de rulare?
Excepțiile de execuție constau în java.lang.RuntimeException și toate subclasele sale. Din punct de vedere teoretic, ele servesc aceluiași scop ca excepțiile verificate și pot fi aruncate sau manipulate ca excepție verificată, dar manipularea acestora nu este impusă de compilator. Prin urmare, excepțiile Runtime aparțin familiei excepțiilor necontrolate. NullPointerException, NumberFormatEception, ClassCastException și ArrayIndexOutOfBoundsException sunt excepții obișnuite în timpul rulării în Java.
Care este diferența dintre Excepție verificată și Excepție de execuție?
Deși, atât excepțiile verificate, cât și excepțiile runtime sunt nedorite în timpul executării unui program, acestea au diferențele. Verificarea manipulării excepțiilor este asigurată de compilator, dar excepțiile de rulare nu sunt. Prin urmare, excepțiile verificate trebuie să fie aruncate sau manipulate pentru a compila codul, dar nu există o astfel de cerință în ceea ce privește excepțiile de rulare. În consecință, excepțiile de rulare aparțin categoriei excepțiilor necontrolate, împreună cu erorile.
Dezavantajul cu excepțiile verificate este că programatorul trebuie să se ocupe chiar dacă nu știe cum să. Deci, dacă programatorul aruncă o nouă excepție fără a împacheta originalul, urmărirea stivei care aparține excepției inițiale va fi pierdută. Aceasta este situația în care excepțiile de runtime vin la îndemână. Deoarece toate excepțiile de rulare pot fi manipulate într-un singur loc, programatorii pot scrie mai puține cantități de cod. Pe de altă parte, din moment ce trebuie să fie luate în considerare excepțiile verificate, nu este o surpriză pentru programator. Întotdeauna va ști ce excepție verificată ar putea fi aruncată de o anumită metodă. În mod contrar, pot fi aruncate diferite excepții de rulare fără cunoștințele programatorului.