Anbefalet, 2024

Redaktørens Valg

Forskel mellem kontrolleret og ukontrolleret undtagelse i Java

"Throwable" er moderklassen i klasserne Fejl og Undtagelse. Klassen "RuntimeException" og dens underklasser, klassen "Fejl" og dens underklasser er de "Ukontrollerede undtagelser", mens de resterende underklasser i klassen "Undtagelse" undtagen "RuntimeException" er de markerede undtagelser. Den grundlæggende forskel mellem kontrolleret og ukontrolleret undtagelse er, at de kontrollerede undtagelser kontrolleres af kompilatoren, mens kompilatoren ikke kontrollerer de ukontrollerede undtagelser .

Lad os diskutere de andre forskelle mellem kontrollerede og ukontrollerede undtagelser ved hjælp af sammenligningstabellen.

Sammenligningstabel

Grundlag for sammenligningKontrolleret UndtagelseUnchecked Exception
GrundlæggendeKompilatoren kontrollerer den markerede undtagelse.Kompilatoren kontrollerer ikke den ukontrollerede undtagelse.
UndtagelsesklasseMed undtagelse af "RuntimeException" -klasse er alle klasseklasserne i klassen "Undtagelse" og "Fejl" -klassen og dens undervisningsgrupper Undtaget."RuntimeException" -klassen og dens børneklasser er "Unchecked Exceptions".
HåndteringHvis vi ikke håndterer den markerede undtagelse, så er kompilatorobjektene.Selv hvis vi ikke håndterer den ukontrollerede undtagelse, er kompilatoren ikke imod.
SamlingProgrammet kompilerer ikke, hvis der er en uhandlet kontrolleret undtagelse i programkoden.Programmet kompilerer succesfuldt, selvom der er en uhåndteret ukontrolleret undtagelse i programkoden.

Definition af kontrolleret undtagelse

De kontrollerede undtagelser er de undtagelser, der kontrolleres af kompilatoren for en jævn gennemførelse af programmet. Kompilatoren kontrollerer, om programmet kan håndtere den markerede undtagelse eller ej. Hvis koden ikke kan håndtere undtagelsen, opstår der en kompileringsfejl. Alle underklasser af klasse "Undtagelse" undtagen klassen RuntimeException er de markerede undtagelser.
Lad os studere den undersøgte undtagelse med et eksempel.

 importer java.io. *; klasseeksempel {public static void main (String args []) {FileInputStream fis = null; fis = nyt FileInputStream ("B: /myfile.txt"); // Denne konstruktor FileInputStream (Fil filnavn) kaster FileNotFoundException, hvilket er en markeret undtagelse. int k; mens ((k = fis.read ())! = -1) {// Metode læses () af FileInputStream klassen kaster også en markeret undtagelse: IOException. System.out.print ((char) k); } fis.close (); // Metoden lukker () lukker filen input stream den kaster IOException. }} 

I ovenstående kode forsøger vi at åbne, læse og vise filindhold. Det kan ske, at filen ikke er til stede, så vil FileNotFoundException forekomme, som er en markeret undtagelse. Hvis kontrolleret undtagelse ikke håndteres, vil kompilatoren ikke tillade, at programmet kompileres jævnt. Det vil vise kompilere tidsfejl. Så til glat samling skal den kontrollerede undtagelse være fanget eller erklæret kastet.

Definition af ukontrolleret undtagelse

Unchecked Undtagelser er de undtagelser, som ikke kontrolleres af kompilatoren. Kompilatoren kompilerer programmet succesfuldt, selvom undtagelserne ikke håndteres af koden. Klassen "Fejl" og dens børneklasser, klassen "Runtime" og dens underklasser er de ukontrollerede undtagelser.

Lad os se et eksempel på en ukontrolleret undtagelse.

 klasseeksempel {public static void main (String args []) {int arc [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }} 

I ovenstående kode kan du se, at der er en ArrayIndexOutOfBoundsException, da jeg forsøger at få adgang til elementet, der ikke eksisterer. Da dette er en ukontrolleret undtagelse, vil der ikke opstå tidsfejl, og filen bliver kompileret uden nogen fejl. Men programmet vil ikke udføres, indtil undtagelsen håndteres. Så for en jævn udførelse skal undtagelserne blive fanget eller erklæret kastet

Nøgleforskelle mellem kontrolleret og ukontrolleret undtagelse

  1. Kontrollerede undtagelser har kendskab til kompilator, mens ukontrollerede undtagelser ikke har kendskab til kompilator.
  2. Bortset fra RuntimeException og Error klasse er alle klasser markeret undtagelse. På den anden side er RuntimeException og Error klasser ukontrollerede undtagelser.
  3. Hvis de kontrollerede undtagelser ikke håndteres af koden, så er kompilatorobjektene. På den anden side, hvis vi ikke håndterer ukontrollerede undtagelser i koden, er kompilatoren ikke imod.
  4. Hvis der er markerede undtagelser i koden, vil koden ikke kompilere, mens selvom ukontrollerede undtagelser ikke håndteres af koden, kompilerer kompileren stadig koden.

Bemærk :

Både kontrolleret eller ukontrolleret undtagelse opstår obligatorisk under løbetid. De kontrolleres eller afkrydses ikke af kompilatoren under kompileringstid.

Konklusion:

Både de kontrollerede og ukontrollerede undtagelser skal håndteres for at kunne udføre programmet jævnt.

Top