Rekommenderas, 2024

Redaktionen

Skillnad mellan kontrollerad och avmarkerad undantag i Java

"Throwable" är klassens föräldraklass Fel och Undantag. Klassen "RuntimeException" och dess underklasser, klassen "Fel" och dess klasser är "Undantagna undantag" medan de övriga underklassen i klassen "Undantag" utom "RuntimeException" är de kontrollerade undantagen. Den grundläggande skillnaden mellan kontrollerat och okontrollerat undantag är att de kontrollerade undantagen kontrolleras av kompilatorn medan kompilatorn inte kontrollerar de obekanta undantagen .

Låt oss diskutera de andra skillnaderna mellan kontrollerade och okontrollerade undantag med hjälp av jämförelsetabellen.

Jämförelsediagram

Grunder för jämförelseKontrollerad undantagAvmarkerad Undantag
GrundläggandeKompilatorn kontrollerar det kontrollerade undantaget.Kompilatorn kontrollerar inte Undantaget undantag.
UndantagsgruppMed undantag för "RuntimeException" klassen är alla barnklasser i klassen "Undantag" och "Fel" -klassen och dess barnklasser Kontrollerad Undantag."RuntimeException" -klassen och dess barnklasser är "Unchecked Exceptions".
HanteringOm vi ​​inte hanterar det markerade undantaget, så kommer kompilatorns objekt.Även om vi inte hanterar det okontrollerade undantaget, invänder kompilatorn inte.
KompileringProgrammet kompilerar inte om det finns ett obehandlat kontrollerat undantag i programkoden.Programmet kompileras framgångsrikt även om det finns ett obehandlat okontrollat ​​undantag i programkoden.

Definition av kontrollerad undantag

De kontrollerade undantagen är de undantag som kontrolleras av kompilatorn för ett smidigt genomförande av programmet. Kompilatorn kontrollerar om programmet kan hantera det kontrollerade undantaget eller inte. Om koden inte kan hantera undantaget uppstår ett kompileringsfel. Alla underklasser i klassen "Undantag" utom klassen RuntimeException är de kontrollerade undantagen.
Låt oss studera det kontrollerade undantaget med ett exempel.

 importera java.io. *; klass exempel {public static void main (string args []) {FileInputStream fis = null; fis = nytt FileInputStream ("B: /myfile.txt"); // Den här konstruktorn FileInputStream (Fil filnamn) kastar FileNotFoundException vilket är ett kontrollerat undantag. int k; medan ((k = fis.read ())! = -1) {// Metodläsning () i FileInputStream-klassen kastar också ett kontrollerat undantag: IOException. System.out.print ((char) k); } fis.close (); // Metoden nära () stänger filinmatningsströmmen som den slänger IOException. }} 

I ovanstående kod försöker vi öppna, läsa och visa filinnehåll. Det kan hända att filen inte är närvarande, då kommer FileNotFoundException att inträffa vilket är ett kontrollerat undantag. Om kontrollerat undantag inte hanteras, kommer kompilatorn inte att tillåta att programmet kompileras smidigt. Det kommer att visa kompilera tidsfel. Så, för smidig sammansättning måste det kontrollerade undantaget fångas eller förklaras kastas.

Definition av okontrollerad undantag

Avmarkerade Undantag är de undantag som inte kontrolleras av kompilatorn. Kompilatorn sammanställer programmet framgångsrikt även om undantagen inte hanteras av koden. Klassen "Fel" och dess barnklasser, klassen "Runtime" och dess underklasser är de obekanta undantagen.

Låt oss se ett exempel på ett okontrollerat undantag.

 klassexempel {public static void main (sträng args []) {int ar [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }} 

I ovanstående kod kan du se att det finns en ArrayIndexOutOfBoundsException, eftersom jag försöker komma åt elementet som inte existerar. Eftersom det här är ett obefintligt undantag, kommer det inte att uppstå tidsfel, och filen kommer att sammanställas utan något fel. Men programmet kommer inte att utföras tills undantaget hanteras. Så, för smidigt utförande måste undantagen fångas eller förklaras kastas

Viktiga skillnader mellan kontrollerad och okontrollerad undantag

  1. Kontrollerade undantag har kunskap om kompilatorn medan okontrollerade undantag inte är kända för kompilatorn.
  2. Förutom RuntimeException och Error class är alla klasser kontrollerade undantag. Å andra sidan är RuntimeException och Error klasserna obekanta undantag.
  3. Om de kontrollerade undantagen inte hanteras av koden, så kommer kompilatorns objekt. Å andra sidan, om vi inte hanterar okontrollerade undantag i koden, motsätter kompilatören inte.
  4. Om krypterade undantag inträffar i koden kommer koden inte att kompileras medan även om obekanta undantag inte hanteras av koden kompilerar kompilanten fortfarande koden.

Notera :

Både kontrollerat eller okontrollerat undantag sker obligatoriskt under körtiden. De kontrolleras eller avmarkeras inte av kompilatorn under kompileringstiden.

Slutsats:

Både de kontrollerade och okontrollerade undantagen måste hanteras för att kunna utföra programmet smidigt.

Top