Skillnad mellan kontrollerad och okontrollerad undantag

Undantagshanteringen i Java är en av de kraftfulla mekanismerna för att hantera specifika fel som uppstår i en kodsekvens vid körning. Ett undantag är ingenting annat än ett runtime-fel som stör det normala flödet av applikationen.

Det förekommer normalt i en bit kod och när det gör skapas ett objekt som representerar det undantaget och kastas i den metod som orsakade det. Som ett resultat avbryts programmet eller applikationen vilket orsakar att programmet avslutas onormalt vilket inte rekommenderas. Det är därför dessa undantag ska hanteras och det är här undantagshanteringsmekanismen kommer till bilden.

Det finns två typer av undantag som finns i Java - Kontrollerad och Avmarkerad Undantag. I den här artikeln kommer vi att diskutera i detalj vad som är kontrollerat och okontrollerat undantag och när man ska använda dem, och slutligen kommer vi att se skillnaden mellan de två.

Vad är kontrollerad undantag i Java?

Det här är de undantag som kontrolleras och hanteras vid sammanställningstiden. Java definierar flera undantagsklasser i standardpaketet java.lang, och de vanligaste undantagen är underklasser av standardtypen RuntimeException.

De undantag som förekommer i områden utanför programmets omedelbara kontroll kallas kontrollerade undantag. Om en metod kastar ett kontrollerat undantag vid kompileringstiden som inte kan hantera det själv, då måste det hantera undantaget i a fånga blockera eller förklara undantaget med hjälp av kastar sökord, annars kommer det att ge ett kompileringsfel. Kompilatorn undersöker undantagsobjektets typ för varje kasta uttalandet och om det visas kontrolleras kompilatorn källkoden för att säkerställa att undantaget hanteras i metoden där den kastas eller förklaras så att den kan hanteras ytterligare.

Alla undantag beskrivna av Undantag vilka är dess direkta underklasser utom för RuntimeException kallas kontrollerade undantag. Nu när ska du använda kontrollerat undantag? Du kan välja att använda ett kontrollerat undantag när du vet exakt vad du ska göra när en Undantag inträffar eller när risken för misslyckande är mer. Några exempel på kontrollerade undantag i Java-biblioteket inkluderar IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException, InvocationTargetException, etc.

Vad är Unchecked Exception i Java?

Det här är undantagen som inte kontrolleras vid sammanställningstiden. Avmarkerad Undantag representerar ett villkor som i allmänhet återspeglar fel i ett programs logik och som inte kan återställas från vid körning.

Enkelt uttryckt är okontrollat ​​undantag ett undantag som inte fångas i en försök fånga blockera. De behöver inte fångas explicit. Faktum är att när ett obekant undantag inträffar, hanterar Java undantaget automatiskt. Avmarkerade undantag sker oftast på grund av programmeringsfel, t.ex. när man får tillgång till element utanför en arraybindning eller åtkomstmetod för ett nullobjekt. I Java är alla undantag under kastbara markerade undantag, medan undantag som är direkta underklasser av Fel och RuntimeException är obekanta undantag.

Den bästa delen av ett obekant undantag är att det inte minskar kodläsbarheten medan klientkoden hålls ren. Några exempel på okontrollerade undantag inkluderar AritmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException, etc.

Skillnad mellan Kontrollerad och Avmarkerad Undantag

Definition av kontrollerad och avmarkerad undantag

Kontrollerad och Avmarkerad Undantag finns de två typerna av undantag i Java för att säkerställa normal flöde av programmet. Båda tjänar samma syfte som att hantera undantag i Java och även om det inte finns någon skillnad i funktionalitet, finns det ingen enskild regel att bestämma när man ska använda kontrollerad och när man ska använda obekod undantag. Kontrollerad Undantag är ett undantag som kontrolleras vid kompileringstid medan Unchecked Exception är den som inte kontrolleras vid kompileringstid.

Grunderna för kontrollerad och okontrollerad undantag

Ett kontrollerat undantag avser de ogiltiga scenarier som inträffar utanför programmets omedelbara kontroll medan obefogat undantag hänvisar till fel i programmet eller buggarna i programmets logik som inte kan återvinnas från vid körning.

Undantagshantering

Om en metod kollar ett kontrollerat undantag, kommer kompilatorn att kontrollera om metoden hanterar det undantaget med hjälp av provningsfångstblock eller ange undantaget med att kasta sökord. Om metoden inte anger hanteringskoden visas det ett kompileringsfel. Tvärtom sammanställer programmet bara bra eftersom kompilatorn inte kontrollerar för okontrollerade undantag vid sammanställningstiden.

Orsak av kontrollerad och okontrollerad undantag

Undantag som inte härrör från RunTimeException hanteras ofta medan undantag sker vid körning sällan hanteras. En kontrollerad undantag uppstår när risken för misslyckande är för hög. Avmarkerad Undantag, å andra sidan, sker mest på grund av programmeringsfel. Alla undantag under RuntimeException och Error klasser är okontrollerade undantag, medan allt annat under throwable är kontrollerade undantag.

Exempel på Kontrollerad och Avmarkerad Undantag

Några exempel på kontrollerade undantag är IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException och mer. Exempel på okontrollerade undantag inkluderar NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException, etc.

Kontrollerad vs Okontrollerad Undantag: Jämförelse Diagram

Sammanfattning av kontrollerad och okontrollerad undantag

Kontrollerad och Avmarkerad Undantag är de två typerna av undantag som finns i Java. Medan funktionaliteten är densamma för båda undantagen har de en rättvis andel av skillnaderna. Huvudskillnaden mellan kontrollerade och obekanta undantag är att den förstnämnda kontrolleras av kompilatorn medan den senare undviker meddelandet om kompilatorn. Undantag som kontrolleras och hanteras vid kompileringstid är kontrollerade undantag, medan undantag som inte kontrolleras och hanteras vid sammanställningstiden är okontrollerade undantag. Den här artikeln förklarar vad som är markerat och vad är okontrollat ​​undantag, när man ska använda dem och förklarar skillnaden mellan de två.