Innholdsfortegnelse:
Video: $stdout - Pair Programming 2025
Det er viktig at Java-koden gjør sitt ytterste for å løse et problem. Det er imidlertid tider når koden din ikke har nok informasjon, ressurser, rettigheter eller noe annet krav til å løse et problem.
Når dette skjer, kaster koden din en feil ved å bruke et unntaksobjekt. Begrepet unntak er hensiktsmessig fordi det burde være unntaket til regelen, i stedet for den første handlingen som søknaden utfører. Likevel støter applikasjoner på feil som krever eksepsjonelle tiltak, og følgende avsnitt beskriver hvordan man skal håndtere slike situasjoner.
Kastfeil under eksepsjonelle forhold
For øvelse kan du opprette et program som kan generere flere typer feil. Normalt vil du ikke kaste en feil hvis en verdi er i feil rekkevidde - du vil vise en melding direkte til brukeren i stedet. Du kan imidlertid lage et eksempel som demonstrerer hvordan du kaster og tar en feil fra en metode.
Passeringsfeil til den som ringer
Mange kodeeksempler du begynner med, begynner akkurat å komme til det punktet du ringer metoder fra main (). Hovedmetoden () er alltid det øverste nivået av søknaden din. Som du ringer til, vil metodene du ringer danne flere nivåer.
For eksempel vil en metode som kalles fra main () være på det andre nivået av søknaden din. Hvis den metoden måtte kalle en annen metode, ville den metoden være på tredje nivå, og så videre. De fleste applikasjonene består av mange nivåer av samtaler.
Faktisk, når du ser et unntak på skjermen, viser det faktisk en liste over metodene som kalte den gjeldende metoden i et format som heter call stack.
Anropsstakken er en liste over metoder og rekkefølgen som de kalles av andre metoder. Å vite samtalestakken kan hjelpe deg med å finne kilden til en potensiell feil når den ikke skjer på det nåværende nivået av applikasjonen.
Håndteringsfeil er en viktig del av god programmeringspraksis. Hvis du vil ha robuste applikasjoner som ikke hele tiden krasjer, må du sørge for god feilhåndtering. Det er imidlertid også et problem å forsøke å håndtere en feil når du ikke har nok informasjon til å håndtere denne feilen.
Når koden forsøker å fikse en feil for lavt nivå, skjuler den feilen fra et nivå som muligens kan fikse det. Ja, du vil fikse en feil på lavest mulig nivå, men ikke på bekostning av å gi en reparasjon som faktisk kunne ende opp med å gjemme noe mer alvorlig.
Når du finner ut at et bestemt nivå av et program ikke har de nødvendige ressursene, informasjonene, rettighetene, brukerens tilgang eller noe annet element som trengs for å håndtere en feil, utsteder du et kasteoppdrag med det aktuelle unntaksobjektet.Det forrige nivået av søknaden vil motta unntaket og avgjøre om det kan håndtere det.
Men hvis hovedmetoden () () får unntaket, må du avgjøre hva du skal gjøre med feilen, eller programmet vil krasje. Det regnes generelt som dårlig programmeringspraksis for å bare la programmet krasje - du må komme opp med noen måte å håndtere feil som applikasjonen møter.
Nødvendig feilbehandling
Java gir to typer unntak: sjekket (de som overvåkes av JRE) og ukontrollert (de som ikke overvåkes av JRE). Du har muligheten til å håndtere et ukontrollert unntak. Imidlertid tvinger Java deg til å håndtere et kontrollert unntak. Koden din vil ikke engang kompilere hvis du prøver å bruke en metode som har et merket unntak assosiert med det.
Et kontrollert unntak er en som JRE blir fortalt av klassen definisjonen for å overvåke. JRE tvinger brukeren av klassen til å gi håndtering for unntaket for å sikre at klassen utfører pålidelig.
Alle typer merkelige detaljer er knyttet til sjekket og ukontrollert unntak. En enkel måte å vite om et unntak er sjekket, er å vite foreldreklassen. Alle unntak som er underklasse fra feil- eller RuntimeException-klassene er ikke merket - alle andre unntak er merket.
Den beste fremgangsmåten er å håndtere alle unntak i søknaden din, og du trenger ikke å bekymre deg for om et unntak er merket eller ikke merket. En stor utvikler håndterer alltid mulige feil - det er bunnlinjen.
