Unntakshåndtering i Java er en av de kraftige mekanismene for å håndtere spesifikke feil som oppstår i en kodesekvens ved kjøring. Et unntak er ingenting annet enn en kjøretidsfeil som forstyrrer normal strøm av applikasjonen.
Det oppstår vanligvis i et stykke kode, og når det gjøres, opprettes et objekt som representerer det unntaket og kastet i metoden som forårsaket det. Som et resultat blir programmet eller applikasjonen forstyrret, slik at programmet avsluttes unormalt, hvilket ikke anbefales. Dette er grunnen til at disse unntakene skal håndteres, og dette er hvor unntakshåndteringsmekanismen kommer til bildet.
Det finnes to typer unntak som eksisterer i Java - Kontrollert og Ukontrollert Unntak. I denne artikkelen vil vi diskutere i detalj hva som er sjekket og ukontrollert unntak og når du skal bruke dem, og til slutt vil vi se forskjellen mellom de to.
Dette er unntakene som blir sjekket og håndtert på kompileringstidspunktet. Java definerer flere unntaksklasser i standardpakken java.lang, og de vanligste unntakene er underklasser av standardtypen RuntimeException.
De unntakene som forekommer i områder utenfor programmets umiddelbare kontroll, kalles sjekket unntak. Hvis en metode kaster et kontrollert unntak på kompileringstiden som ikke kan håndtere det selv, da må det håndtere unntaket i a å fange blokkere eller erklære unntaket ved hjelp av kaster søkeord, ellers vil det gi en kompileringsfeil. Kompilatoren undersøker unntaksobjektets type for hver kaste setningen og hvis den viser sjekket, kontrollerer kompilatoren kildekoden for å sikre at unntaket håndteres i metoden der det kastes eller erklæres slik at det kan håndteres videre.
Alle unntak beskrevet av Unntak hvilke er de direkte underklassene bortsett fra RuntimeException kalles sjekket unntak. Nå når skal du bruke kontrollert unntak? Du kan velge å bruke et merket unntak når du vet nøyaktig hva du skal gjøre når en Unntak forekommer eller når sjansene for svikt er mer. Noen eksempler på sjekket unntak i Java-biblioteket inkluderer IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException, InvocationTargetException, etc.
Dette er unntakene som ikke er merket på kompileringstidspunktet. Ukontrollert Unntak representerer en betingelse som generelt reflekterer feil i et programs logikk og som ikke kan gjenopprettes fra ved driftstid.
Enkelt sagt er ukontrollert unntak et unntak som ikke er fanget i en prøve-fangst blokkere. De trenger ikke å bli fanget eksplisitt. Faktisk, når et ukontrollert unntak oppstår, håndterer Java unntaket automatisk. Ukontrollerte unntak skjer for det meste på grunn av programmeringsfeil, for eksempel når du åpner element utenfor en arraybinding eller tilgangsmetode for et nullobjekt. I Java er alle unntak under kastbare sjekkede unntak, mens unntak som er direkte underklasser av Feil og RuntimeException er ukontrollerte unntak.
Den beste delen av et ukontrollert unntak er at det ikke reduserer kode lesbarhet samtidig som klientkoden er ren. Noen eksempler på ukontrollerte unntak inkluderer ArithmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException, etc..
Kontrollert og Ukontrollert Unntak er de to typer unntakene i Java for å sikre normal strøm av applikasjonen. Begge har samme formål som å håndtere unntak i Java, og selv om det ikke er noen forskjell i funksjonalitet, er det ingen enkelt regel å bestemme når du skal bruke sjekket og når du skal bruke ukontrollert unntak. Kontrollert unntak er et unntak som blir sjekket på kompileringstid, mens ukontrollert unntak er den som ikke er merket på kompileringstidspunktet.
Et kontrollert unntak refererer til de ugyldige scenariene som oppstår utenfor programmets umiddelbare kontroll mens ukontrollert unntak refererer til feilene i programmet eller feilene i programmets logikk som ikke kan gjenopprettes fra ved driftstid.
Hvis en metode kaster et kontrollert unntak, vil kompilatoren sjekke om metoden håndterer det unntaket ved hjelp av "catch-block" eller angi unntaket ved å bruke kaster søkeord. Hvis metoden ikke gir håndteringskoden, vil den vise en kompileringsfeil. Tvert imot, kompilerer programmet bare bra fordi kompilatoren ikke sjekker for ukontrollerte unntak på kompileringstidspunktet.
Unntak som ikke er avledet fra RunTimeException, håndteres ofte, mens det unngås unntak ved kjøring, sjelden håndteres. En kontrollert unntak oppstår når sjansene for feil er for høye. Ukontrollert Unntak, derimot, skjer hovedsakelig på grunn av programmeringsfeil. Alle unntak under RuntimeException og Error klasser er ukontrollerte unntak, mens alt annet under kastes er merket unntak.
Noen eksempler på sjekket unntak er IOException, DataAccessException, IllegalAccessException, InterruptedException, ClassNotFoundException og mer. Eksempler på ukontrollerte unntak inkluderer NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException, etc.
Sjekket og Ukontrollert Unntak er de to typer unntak som eksisterer i Java. Mens funksjonaliteten er den samme for begge unntak, har de en rettferdig andel av forskjellene. Hovedforskjellen mellom sjekket og ukontrollert unntak er at den tidligere er sjekket av kompilatoren mens den sistnevnte unngår varsel om kompilatoren. Unntak som kontrolleres og håndteres på kompileringstid er sjekket unntak, mens unntak som ikke er sjekket og håndteres på kompileringstid, er ukontrollerte unntak. Denne artikkelen forklarer hva som er sjekket og hva er unchecked unntak, når du skal bruke dem, og forklarer forskjellen mellom de to.