Tre typer unntak i Java

Programkode, HTML og JavaScript på LCD-skjerm

Dominik Pabis / Getty Images





Feil er bane av brukere og programmerere. Utviklere vil åpenbart ikke at programmene deres faller over hver eneste sving, og brukere er nå så vant til å ha feil i programmer at de motvillig aksepterer å betale prisen for programvare som nesten helt sikkert vil ha minst én feil i seg. Java er designet for å gi programmereren en sportslig sjanse til å designe en feilfri applikasjon. Det er unntak som programmereren vil vite er en mulighet når en applikasjon samhandler med en ressurs eller en bruker, og disse unntakene kan håndteres. Dessverre er det unntak programmereren ikke kan kontrollere eller bare overser. Kort sagt, alle unntak er ikke skapt like og derfor er det flere typer for en programmerer å tenke på.

Et unntak er en hendelse som gjør at programmet ikke kan flyte i den tiltenkte utførelse. Det er tre typer unntak – det sjekkede unntaket, feilen og kjøretidsunntaket.



Det sjekkede unntaket

Avmerkede unntak er unntak som en Java-applikasjon skal kunne takle. For eksempel, hvis en applikasjon leser data fra en fil, bør den kunne håndtere |_+_| . Tross alt er det ingen garanti for at den forventede filen kommer til å være der den skal være. Alt kan skje på filsystemet, som en applikasjon ikke har noen anelse om.

For å ta dette eksemplet ett skritt videre. La oss si at vi bruker |_+_| klasse for å lese en tegnfil. Hvis du ser på FileReader-konstruktørdefinisjon i Java-api du vil se metodesignaturen:



|_+_|

Som du kan se, sier konstruktøren spesifikt at |_+_| konstruktør kan kaste en |_+_|. Dette er fornuftig siden det er høyst sannsynlig at |_+_| String vil være feil fra tid til annen. Se på følgende kode:

|_+_|

Syntaktisk er setningene korrekte, men denne koden vil aldri kompileres. Kompilatoren kjenner |_+_| konstruktør kan kaste en |_+_| og det er opp til ringekoden å håndtere dette unntaket. Det er to valg - for det første kan vi overføre unntaket fra metoden vår ved å spesifisere en |_+_| klausul også:

|_+_|

Eller vi kan faktisk håndtere med unntaket:

|_+_|

Velskrevne Java-applikasjoner skal kunne takle sjekkede unntak.



Feil

Den andre typen unntak er kjent som feilen. Når et unntak oppstår JVM vil opprette et unntaksobjekt. Disse objektene stammer alle fra |_+_| klasse. Den |_+_| klasse har to hovedunderklasser— |_+_| og |_+_|. Den |_+_| klasse betegner et unntak som en søknad sannsynligvis ikke vil kunne håndtere.

Disse unntakene anses som sjeldne. For eksempel kan JVM gå tom for ressurser på grunn av at maskinvaren ikke klarer å takle alle prosessene den må håndtere. Det er mulig for applikasjonen å fange feilen for å varsle brukeren, men vanligvis må applikasjonen lukkes til det underliggende problemet er håndtert.



Kjøretidsunntak

EN runtime unntak oppstår ganske enkelt fordi programmereren har gjort en feil. Du har skrevet koden, alt ser bra ut for kompilatoren, og når du går for å kjøre koden, faller den over fordi den prøvde å få tilgang til et element i en array som ikke eksisterer eller en logisk feil førte til at en metode ble kalt med en nullverdi. Eller en rekke feil en programmerer kan gjøre. Men det er greit, vi oppdager disse unntakene ved uttømmende testing, ikke sant?

Feil og kjøretidsunntak faller inn i kategorien ukontrollerte unntak.