DatamaskinerProgrammering

Java: unntak og deres håndtering

Ethvert program vil operere stabilt bare hvis kildekoden er feilsøkt, og det er ingen forhold som kan føre uforutsette situasjoner. Prosessen med å fange eventuelle feil blir utført på programmerings scenen. For å gjøre dette, tar utvikleren hensyn til alle de forventede resultater og forsøker å begrense effekten av feil på en slik måte at det ikke kunne forstyrre driften av programmet, eller føre til kollaps sin.

Når du trenger avvikshåndtering

I Java, kan et unntak være forårsaket av feil brukerundersøkelser, ikke behov for en ressurs eller plutselig nettverk frakobling program. For komfortabel bruk skapt av programutvikleren, må du kontrollere forekomsten av krisesituasjoner. Forbrukeren skal ikke behøve å vente med å avslutte et program, for å miste data som følge av en ubehandlet unntak, eller bare en del av en melding som sier at noe gikk galt.

Håndtering Java unntak

Hva du bør vurdere? Java-språket har sin egen innebygde unntak håndtering funksjonalitet. Selvfølgelig er en stor andel av feil fanget av en annen samling stadium, vil systemet automatisk varsle at bruken det er ikke lenger mulig. Men det er denne type unntak som oppstår under kjøring. Utbygger skal kunne forutse det og å utforme koden slik at det ikke føre til en feil, og håndterte det på en spesiell måte og over kontrollen til en annen gren levert.

I Java, er dette pålegges av kompilatoren for å fange et unntak, så de typiske problemene er kjent og har en standard øvelse mønstre.

typiske utelukkelser

Det enkleste eksempelet, der du kan få et unntak - denne divisjonen. Til tross for sin enkelhet, i form, som en deler, kan være null, noe som vil resultere i en feil. Vel, hvis det er mulig å forutsi fremveksten av fortiden og forebygge. Men dette alternativet er ikke alltid tilgjengelig, så fanger unntaket bør organiseres direkte i tilfelle "dividere med null".

Java mekanisme for å fange opp behandlingsfeil ser slik ut:

  • haug unntak objektet er opprettet, så vel som en hvilken som helst annen;
  • det naturlige løpet av programmet er avbrutt;
  • utelukkelsesmekanismen prøver å finne en alternativ måte å fortsette kode;
  • Finn en sikker gjennomføring av programmet i prosessoren, arbeid eller restaurert, eller vil oppstå realisering av unntaket på en spesiell måte.

Det enkleste eksempel på å skape en feil kan se slik ut:

if (a == null)

kaste nytt NullPointerException ();

Her blir den variable en kontrollert ved initialisering, dvs. er ikke hvorvidt referanse til en null objekt. Hvis denne situasjonen har oppstått og trenger spesiell håndtering, er et unntak kastet av et kast ny NullPointerException ().

Noen detaljer om søkeord

Når du arbeider med unntak er ofte nødvendig å bruke søkeordet Java for å referere til en bestemt handling. Dette språket de fem programmering:

  • Try. Dette søkeordet er allerede oppfylt, og det betyr en overgang til en del av koden som kan kaste et unntak. Blokk begrenset bukseseler {}.
  • Catch. Det avskjærer den ønskede unntak type og håndtere dem på riktig måte.
  • Endelig. Dette søkeordet er valgfritt og brukes til å utføre en bestemt del av koden, som er nødvendig likevel, selv om ingen unntak ikke blir fanget. Lagt direkte etter forsøk blokken.
  • Kast - lar deg lage Java unntak fra hvor som helst.
  • Kaster - et søkeord som er plassert i metoden signaturen. Det betyr at følgende kode kan kaste et unntak for denne type Java. Dette merket fungerer som et signal til utviklere som må tas i betraktning - metoden kan ikke fungere som forventet av ham.

Fanger med en prøve

Slipp til Java unntak, forutsetter selvsagt at det vil bli håndtert på en spesiell måte. Den mest praktiske måten å gjøre det, hvis koden delen er inngjerdet i en blokk. Som kan inneholde et unntak. Når du kjører denne koden, vil den virtuelle maskinen finne en uventet situasjon, forstår at det er en kritisk blokk og overfører kontrollen til stasjonen med behandlingen.

Java-koden er innpakket i en spesiell blokk prøve, innen noe som kan være et unntak. Dermed satte han flere uforutsette situasjoner som vil bli fanget på samme sted, ikke raspolzayas kode.

Den mest typiske koden til prosesseringsenheten er som følger:

try {

// Her er noen kode som kan generere et unntak

} Catch (Tip_isklyucheniya_1 identifikator_1) {

// Her er det unntakshåndtering, i henhold til type og forhold;

} Catch (Tip_isklyucheniya_2 identifikator_2) {

// Her er det unntakshåndtering, i henhold til type og forhold;

}

Ordet fangst rapporterer at koden, og skanne den for et unntak, for å bli behandlet som beskrevet nedenfor, forutsatt at det er i samsvar med denne typen. Identifikatoren kan anvendes i behandlingen av kodeblokken som argumenter.

endelig

Som det ble klart fra forrige kapittel, fangst blokker fange unntak og behandle dem. Men veldig ofte situasjonen oppstår der bør kjøre noen kode, uavhengig av om de ble fanget feil. For dette er det søkeordet endelig. Den brukes til å øke verdiene av de ulike tellerne, lukke filer eller nettverkstilkoblinger.

Denne tomten presenterer flere fangst blokker oppfunnet metoder fange unntak. For eksempel, den koden i forsøk genererer en uventet situasjon som Cold. Deretter vil konsollen bli vist uttrykket «Caught kaldt!» Og «Er det noe å feire?». Det vil si at endelig blokken blir utført i alle fall.

Faktisk, en måte å unngå å utløse endelig der. Det er forbundet med gjennomføringen av den virtuelle maskin. Finn hvordan å gjennomføre det, er det mulig på Internett åpne områder.

kast søkeord

Kast genererer et unntak. Syntaksen er som følger:

kaste nytt NewException ();

Det er opprettet en ny unntak til den type NewException (). Som en type kan brukes er allerede inkludert i standard Java bibliotek klasser og tidligere definert av utbygger av sin egen produksjon.

Denne utformingen er en del av beskrivelsen av noen metode, som samtalen skal da skje innenfor prøve blokken, for å være i stand til å fange den.

søkeord kaster

Hva hvis du er i ferd med å utvikle en situasjon hvor metoden kan kaste et unntak, men er ikke i stand til å håndtere riktig. For dette formål, i metoden signaturen spesifiserer ordet kast og type mulige unntak.

Dette merket er en form for indikator for klient utviklere at fremgangsmåten ikke er i stand til å håndtere de samme unntak. I tillegg, hvis feiltypen er krysset av, så kompilatoren vil tvinge eksplisitt ber om det.

Prøv å ressurser

Java versjon 7 utviklere har tatt en stor innovasjon, som en behandling prøve blokk med ressurser.

Mange gjenstander er laget i Java, etter bruk bør stenges for å spare ressurser. Tidligere det måtte ta hensyn til dette og stoppe disse tilfellene manuelt. Nå, derimot, syntes de AutoClosable grensesnitt. Det hjelper å automatisk lukke allerede brukt gjenstander plassert i en prøve blokk. Gjennom denne tilnærmingen har det blitt mer praktisk å skrive kode i sin lesbarhet er betydelig økt.

Egne klasser Java unntak

Skaperne av den beskrevne programmeringsspråket tok hensyn til mange aspekter av design typer kriser. Men alle alternativene for å hindre utfallet av hendelser vil ikke fungere, så i Java implementert muligheten til å definere sine egne unntak, er det hensiktsmessig å behovene til bestemt kode.

Den enkleste måten å lage - å arve fra den mest hensiktsmessige til objektet sammenheng.

Det skjedde til å arve fra Unntak, den klassen som brukes til å definere dine egne unntak. I MyException har to konstruktører - et standard, den andre - sammen med argumentet msg typen String.

Så, i det offentlige klasserom FullConstructors implementert metode f, som inneholder signaturen kaster MyException. Dette søkeordet betyr at f kan kaste ut Java MyException unntak. Videre, i fremgangsmåten artikler produsert i tekstinformasjon utgang til selve konsollen og den virkelig produksjon MyException, ved kast.

Den andre metoden er litt forskjellig fra den første som når man oppretter et unntak, er det ført en snor parameter, som vil bli reflektert i konsollen ved fangst. I hoved er det klart at f () og g () er plassert i et forsøk kontroll og søkeord fangst konfigurert til å fange MyException. Resultatet av behandlingen er å vise en feilmelding til konsollen:

Dermed kom den til å legge Java unntak av sin egen hånd.

Arkitektur unntak

Som med alle objekter i Java, er unntak også arvet og har en hierarkisk struktur. Roten element av alle feil kastet i dette programmeringsspråk er klasse java.lang.Throwable. Arvet fra ham to slag - Feil og unntak.

Feil - signaliserer kritisk feil og er ukontrollert Java unntak. Oppfanging og behandling av slike data i de fleste tilfeller forekommer på konstruksjonsstadiet og ikke har behov for å innføre i den endelige applikasjonskode.

Den mest vanlig anvendte klasse for å skape og å analysere de unntak som er unntak. Som i sin tur er delt inn i flere grener, inkludert RuntimeException. Ved RuntimeException er runtime unntak, det vil si, som forekommer i løpet av programmet. Alle klasser som stammer fra det er unverifiable.

Ofte finnes det unntak

I Java unntak, blir listen som presenteres nedenfor, blir brukt oftest, så du bør beskrive hver av dem i detalj:

  • ArithmeticException. Disse inkluderer feil assosiert med aritmetiske operasjoner. Det mest fremtredende eksempel - divisjon med null.
  • ArrayIndexOutOfBoundsException - en appell til den gruppeelementutbyttende tall som overstiger summen av dens lengde.
  • ArrayStoreException - forsøk på å tilordne en inkompatibel elementtype i matrisen.
  • ClassCastException - et forsøk på å bringe feil en type til en annen.
  • IllegalArgumentException - bruker feil argument i metodekallet.
  • NegativeArraySizeException - et unntak når du oppretter en rekke negative størrelse.
  • NullPointerException - misbruk av referanser til null.
  • NumberFormatException - oppstår når en feil streng konvertering til heltall.
  • UnsupportedOperationException - Operasjonen er ikke støttet.

Disse eksemplene representerer typer ukontrollert Java unntak. Men så ser sjekket:

  • ClassNotFoundException - Klasse ikke funnet.
  • IllegalAcccessException - begrense tilgangen til klassen.
  • InterruptedException - avbrudd i flyten.
  • NoSuchFieldException - det er ingen obligatorisk felt.

Tolkningen av unntakene

Snakker av ofte spurte unntak bør bemerkes at deres tolkning i design, kan bli oppfattet feil. Neste er en kort liste som forklarer mer i detalj, hvor det kan være en uventet situasjon.

NullPointerException. Den aller første tilfelle når det er et unntak, er å appellere til en referanse til et objekt som er lik null. Den strekker seg også til null klasse instansmetoder. NullPointerException kan kastes når det gjelder å oppnå en lik lengde null array. For å unngå slike situasjoner vil regelmessig sjekke nettsteder på null.

ArrayIndexOutOfBoundsException. Ethvert program kan ikke eksistere uten bruk av arrays. Følgelig kan det ofte ty til det generere og feiling. Unntak oppstår når en utvikler prøver å få tilgang til en rekke element som ikke er i indeksen listen. For eksempel, er den ønskede verdi over eller under null lengde. Svært ofte er et resultat av det faktum at i rekken begynner med en poengsum på null.

funn

Håndtering Java unntak - et kraftig verktøy miljø, som i stor grad forenkler arbeidet til programmerer og tillater ham å lage et rent og blottet for kodefeil. På hvor glatt og stabil funksjon søknad avhenger av status og omdømme av utbygger.

Selvfølgelig, i en mer eller mindre enkle programmer for å spore unormale situasjoner mye enklere. Men i store automatiserte komplekser for noen få hundre tusen linjer er det mulig bare som et resultat av langtidstesting og feilsøking.

For Java unntak feil som oppstår i enkelte programmer, noen selskaper tilbyr en belønning når de finner entusiaster. Spesielt verdsatt av de som forårsaker et brudd på sikkerhetspolitikk programvare.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 no.delachieve.com. Theme powered by WordPress.