Undtagelseshåndtering i Java er en af de kraftfulde mekanismer til at håndtere specifikke fejl, der opstår i en kodesekvens under kørsel. En undtagelse er intet andet end en runtime-fejl, der forstyrrer den normale strøm af applikationen.
Det forekommer normalt i et stykke kode, og når det sker, oprettes et objekt, der repræsenterer denne undtagelse, og kastet i den metode, der forårsagede det. Som et resultat afbrydes programmet eller applikationen, hvilket får applikationen til at afslutte unormalt, hvilket ikke anbefales. Dette er grunden til, at disse undtagelser skal håndteres, og det er her undtagelseshåndteringsmekanismen kommer på billedet.
Der er to typer undtagelser, der findes i Java - Kontrolleret og ikke-markeret undtagelse. I denne artikel vil vi diskutere detaljeret, hvad der er markeret og ikke markeret undtagelse, og hvornår vi skal bruge dem, og til sidst vil vi se forskellen mellem de to.
Dette er undtagelserne, der kontrolleres og håndteres på kompileringstidspunktet. Java definerer flere undtagelsesklasser i standardpakken java.lang, og de mest almindelige undtagelser er underklasser af standardtypen RuntimeException.
Disse undtagelser, der forekommer i områder uden for den umiddelbare kontrol af programmet, kaldes kontrollerede undtagelser. Hvis en metode kaster en kontrolleret undtagelse på kompileringstidspunktet, som ikke selv kan håndtere den, så skal den håndtere undtagelsen i a fangst blokerer eller erklærer undtagelsen ved hjælp af kaster søgeord, ellers giver det en kompilationsfejl. Kompilatoren undersøger undtagelsesobjektets type for hver kaste erklæring, og hvis den viser markeret, kontrollerer kompilatoren kildekoden for at sikre, at undtagelsen håndteres i metoden, hvor den kastes eller erklæres, så den kan håndteres yderligere.
Alle undtagelser beskrevet af Undtagelse som er dens direkte underklasser undtagen RuntimeException kaldes kontrollerede undtagelser. Hvornår skal man nu kontrollere undtagelsen? Du kan vælge at bruge en markeret undtagelse, når du ved nøjagtigt, hvad du skal gøre, når en Undtagelse opstår, eller når chancerne for fiasko er større. Nogle eksempler på kontrollerede undtagelser i Java-bibliotek inkluderer IOException, DataAccessException, IllegalAccessException, InterruptException, ClassNotFoundException, InvocationTargetException, osv..
Dette er undtagelserne, der ikke kontrolleres på kompileringstidspunktet. Ikke-markeret undtagelse repræsenterer en betingelse, der generelt afspejler fejl i et programs logik, og som ikke kan gendannes fra ved kørsel.
Enkelt sagt er ikke markeret undtagelse en undtagelse, der ikke er fanget i en try-catch blok. De behøver ikke at blive fanget eksplicit. Når der forekommer en ikke-markeret undtagelse, håndterer Java undtagelsen automatisk. Ikke-afkrydsede undtagelser forekommer for det meste på grund af programmeringsfejl, f.eks. Når man får adgang til element uden for en matrixbinding eller adgangsmetode til et nullobjekt. I Java kontrolleres alle undtagelser under kastbar undtagelser, mens undtagelser, der er direkte underklasser af Fejl og RuntimeException er ikke markerede undtagelser.
Den bedste del af en ikke markeret undtagelse er, at den ikke reducerer kodelæsbarheden, mens klientkoden holdes ren. Nogle eksempler på ikke-afkrydsede undtagelser inkluderer ArithmeticException, ClassCastException, NullPointerException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException osv..
Kontrolleret og ikke-markeret undtagelse er de to typer undtagelser, der findes i Java for at sikre normal flow af applikationen. Begge tjener det samme formål, som er at håndtere undtagelser i Java, og selvom der ikke er nogen forskel i funktionalitet, er der ingen enkelt regel til at bestemme, hvornår de skal kontrolleres, og hvornår man skal bruge en ikke-markeret undtagelse. Kontrolleret undtagelse er en undtagelse, der kontrolleres på kompileringstidspunktet, mens ikke markeret undtagelse er den, der ikke er kontrolleret på kompileringstidspunktet.
En markeret undtagelse henviser til de ugyldige scenarier, der forekommer uden for den øjeblikkelige kontrol af programmet, mens ikke-markeret undtagelse henviser til fejlene i programmet eller fejl i programmets logik, som ikke kan gendannes fra ved kørsel.
Hvis en metode kaster en markeret undtagelse, kontrollerer kompilatoren, om metoden håndterer denne undtagelse ved hjælp af try-catch-blok eller specificerer undtagelsen ved hjælp af throws-nøgleord. Hvis metoden ikke indeholder håndteringskoden, viser den en kompilationsfejl. Tværtimod kompilerer programmet helt fint, fordi kompilatoren ikke tjekker for ikke-markerede undtagelser på kompileringstidspunktet.
Undtagelser, der ikke er afledt fra RunTimeException, håndteres ofte, mens som undtagelser forekommer ved kørsel sjældent håndteres. En kontrolleret undtagelse opstår, når chancerne for fiasko er for høje. Ikke-markeret undtagelse forekommer på den anden side mest på grund af programmeringsfejl. Alle undtagelser under klasserne RuntimeException og Error er ikke-markerede undtagelser, mens alt andet, der kan kastes, er markeret undtagelser.
Nogle eksempler på markerede undtagelser er IOException, DataAccessException, IllegalAccessException, InterruptException, ClassNotFoundException og mere. Eksempler på ikke-markerede undtagelser inkluderer NullPointerException, ArithmeticException, ArrayIndexOutOfBound, IllegalArgumentException, IllegalStateException, ArrayStoreException, SecurityException osv..
Markeret og ikke-markeret undtagelse er de to typer undtagelser, der findes i Java. Mens funktionaliteten er den samme for begge undtagelser, har de deres rimelige andel af forskelle. Den største forskel mellem kontrollerede og ikke-kontrollerede undtagelser er, at førstnævnte kontrolleres af kompilatoren, mens sidstnævnte undslipper meddelelsen om kompilatoren. Undtagelser, der kontrolleres og håndteres på kompileringstidspunktet, kontrolleres undtagelser, mens undtagelser, der ikke kontrolleres og håndteres på kompileringstidspunktet, er ikke markerede undtagelser. Denne artikel forklarer, hvad der er kontrolleret, og hvad der er ikke markeret undtagelse, hvornår man skal bruge dem, og forklarer forskellen mellem de to.