ComputereProgrammering

Java: undtagelser og deres håndtering

Ethvert program vil fungere stabilt, hvis kildekoden er fejlrettet, og der ikke er nogen betingelser, der kan forårsage uforudsete situationer. Processen med at fange mulige fejl udføres på programmeringsfasen. For at gøre dette, udvikleren tager højde for alle de forventede resultater og forsøg på at begrænse effekten af fejlen, så det ikke kan forstyrre driften af programmet, eller føre til dens sammenbrud.

Når du måske brug for håndtering af undtagelser

I Java kan en undtagelse være forårsaget af forkert brugerinput, intet behov for en ressource eller pludselig netværk frakobling program. Til behagelig brug skabt af ansøgningen bygherren, skal du styre forekomsten af nødsituationer. Forbrugeren bør ikke skal vente på at slutte et program, for at miste data på grund af en ikke-afviklet undtagelse, eller blot en del af en besked om, at noget gik galt.

Håndtering Java undtagelser

Hvad skal overveje? Java-sproget har sin egen indbyggede håndtering af undtagelser funktionalitet. Selvfølgelig er en stor procentdel af fejl fanget af en anden kompilering fase, vil systemet automatisk give at bruge det ikke længere er muligt. Men der er denne form for undtagelse, at der opstår ved runtime. Udvikleren skal kunne forudse den, og at designe den kode, så det ikke medføre en fejl, og håndteret det på en særlig måde og overladt kontrollen til en anden gren.

I Java, er dette pålægges af compileren at fange en undtagelse, så de typiske problemer er kendte og har en standard motionsmønstre.

typiske udelukkelser

Den enkleste eksempel, hvor du kan få en undtagelse - denne opdeling. På trods af sin enkelhed, hvad angår, som en skillevæg, kan være nul, hvilket vil resultere i en fejl. Tja, hvis det er muligt at forudsige fremkomsten af fortiden og forhindre. Men denne mulighed er ikke altid til rådighed, så fange undtagelsen bør organiseres direkte i tilfælde af "divider med nul".

Java mekanisme til at opsnappe behandlingsfejl ser sådan ud:

  • dynge undtagelse objekt er oprettet, samt alle andre;
  • det naturlige forløb af programmet er afbrudt;
  • udelukkelse mekanisme er at forsøge at finde en alternativ måde at fortsætte koden;
  • Find en sikker gennemførelse af programmet i processoren, arbejde eller genoprettes, eller vil forekomme realisering af undtagelse på en særlig måde.

Den enkleste eksempel på at skabe en fejl kunne se sådan ud:

hvis (a == null)

kaste nyt NullPointerException ();

Her er den variable en kontrolleret ved initialisering, dvs. er ikke, om henvisningen til en null-objekt. Hvis denne situation er opstået og har brug for særlig håndtering, er en undtagelse, kastet af et indkast nyt NullPointerException ().

Kun få detaljer om søgeord

Når vi beskæftiger os med undtagelser er ofte nødvendigt at bruge søgeordet Java til at henvise til en bestemt handling. Dette sprog af deres programmering fem:

  • Prøv. Dette søgeord er allerede opfyldt, og det betyder en overgang til et afsnit af kode, der kan kaste en undtagelse. Blok begrænset seler {}.
  • Catch. Det opfanger den ønskede undtagelse type og håndtere det korrekt.
  • Endelig. Dette søgeord er valgfrit og bruges til at udføre en bestemt stykke kode, som er nødvendig alligevel, selv om ingen undtagelse ikke er fanget. Lagt direkte efter try blok.
  • Kast - lader dig oprette Java undtagelser fra hvor som helst.
  • Kast - et søgeord, der er placeret i den metode signatur. Det betyder, at følgende kode kan kaste en undtagelse af denne type Java. Dette mærke fungerer som et signal til udviklere, der skal tages i betragtning - metoden kan ikke som forventet af ham.

Fange med en prøve

Frigivelse til Java undtagelser, antager naturligvis, at det vil blive håndteret på en særlig måde. Den mest bekvemme måde at gøre det, hvis afsnittet koden er indhegnet i en blok. Som kan indeholde en undtagelse. Når du kører denne kode, vil den virtuelle maskine finde en uventet situation, forstå, at der er en kritisk blok og overfører kontrol til stationen med behandlingen.

Den Java-kode er pakket ind i en særlig blok prøve, inden der kan være en undtagelse. Således lagde han flere uforudsete situationer, der vil blive fanget i det samme sted, ikke raspolzayas kode.

Den mest typiske kode til processorenheden er som følger:

try {

// Her er noget kode, der kan generere en undtagelse

} Catch (Tip_isklyucheniya_1 identifikator_1) {

// Her er der undtagelseshåndtering ifølge dets art og betingelser;

} Catch (Tip_isklyucheniya_2 identifikator_2) {

// Her er der undtagelseshåndtering ifølge dets art og betingelser;

}

Keyword fangst rapporterer, at koden, og scanne den for en undtagelse, der skal behandles som beskrevet nedenfor, forudsat at den opfylder sin type. Identifikatoren kan anvendes i behandlingen af kodeblok som argumenter.

Endelig

Da det blev klart fra det foregående kapitel, fangst blokke fange undtagelser og behandle dem. Men meget ofte den situation opstår, hvor skal køre noget kode, uanset om de blev fanget fejltagelser. Til dette er der nøgleordet endelig. Det bruges til at øge værdien af de forskellige tællere, lukning filer eller netværksforbindelser.

Dette plot præsenterer flere catch blokke opfundet metoder fange undtagelser. For eksempel, koden indeholdt i forsøg genererer en uventet situation som Cold. Derefter vil konsollen blive vist udtryk «Fanget koldt!» Og «Er det noget at juble over?». Det vil sige, det endelig blok udføres i alle tilfælde.

Faktisk er en måde at undgå at udløse endelig er der. Det er forbundet med færdiggørelsen af den virtuelle maskine. Find hvordan man gennemfører det, er det muligt på internettet åbne rum.

Smid søgeord

Kaste genererer en undtagelse. Dens syntaksen er som følger:

kaste nyt NewException ();

Der er skabt en ny undtagelse til den type NewException (). Som en type kan bruges allerede er inkluderet i standard Java-bibliotek klasser og tidligere defineret af udvikleren af sin egen produktion.

Dette design er en del af beskrivelsen af en hvilken som helst metode, som opkaldet så skal ske inden for try-blok, for at være i stand til at opfange det.

Søgeord kaster

Hvad hvis i færd med at udvikle en situation, hvor metoden kan kaste en undtagelse, men er ikke i stand til at håndtere korrekt. Til dette formål i metoden signatur angiver ordet kast og typen af mulige undtagelser.

Denne etiket er en slags indikator for klient udviklere, at metoden ikke er i stand til at håndtere deres samme undtagelse. Desuden, hvis fejltypen er markeret, så compileren vil tvinge udtrykkeligt beder om det.

Prøv at ressourcerne

De Java version 7 udviklere har medtaget en vigtig nyskabelse, som en behandling try-blok med ressourcer.

Mange genstande er skabt i Java, efter brug bør lukkes ned for at spare på ressourcerne. Tidligere skulle tage hensyn til dette og stoppe disse tilfælde manuelt. Men nu de optrådte AutoClosable grænseflade. Det hjælper til at automatisk at lukke allerede anvendes objekter placeret i en try-blok. Gennem denne tilgang er det blevet nemmere at skrive kode i sin læsbarhed er væsentligt forøget.

Egne klasser Java undtagelser

Skaberne af den beskrevne programmeringssprog tog hensyn til mange aspekter af design typer nødsituationer. Men alle de muligheder for at forhindre, at udfaldet af begivenheder ikke vil arbejde, så i Java implementeret muligheden for at definere deres egne undtagelser, er det hensigtsmæssigt at behovene i den pågældende kode.

Den enkleste måde at skabe - at arve fra den mest hensigtsmæssige til objektet kontekst.

Der skete at arve fra Undtagelse, den klasse, der bruges til at definere dine egne undtagelser. I MyException har to konstruktører - en standard, den anden - med det argument msg typen String.

Så i den offentlige klasseværelset FullConstructors implementeret metode f, som indeholder signaturen kaster MyException. Dette søgeord betyder, at f kan kaste ligesom Java MyException undtagelse. Endvidere i metoden krop producerede tekstinformation output til selve konsollen og den faktiske generation MyException ved kast.

Den anden metode er lidt anderledes end den første, som når du opretter en undtagelse, er det passeret en streng parameter, som vil blive afspejlet i konsollen til at fange. I hovedsagen er det klart, at f () og g () er placeret i en prøve kontrol og nøgleordet fangst konfigureret til at fange MyException. Resultatet af behandlingen er at vise en fejlmeddelelse til konsollen:

det kom således til at tilføje Java undtagelser, som hans egen hånd.

Arkitektur undtagelser

Som med alle objekter i Java, er undtagelser også arvet og har en hierarkisk struktur. Roden element i alle fejl smidt i dette programmeringssprog er klasse java.lang.Throwable. Arvet fra ham to slags - Fejl og undtagelse.

Fejl - signalerer kritisk fejl og ikke er markeret Java undtagelser. Aflytning og behandling af sådanne oplysninger i de fleste tilfælde sker i projekteringsfasen og ikke har behov for at indføre i den endelige ansøgning kode.

Den mest almindeligt anvendte klasse for at skabe og analysere undtagelserne er Undtagelse. Hvilket igen er opdelt i flere afdelinger, herunder RuntimeException. Ved RuntimeException er runtime undtagelser, det vil sige, der opstår i løbet af programmet. Alle klasser, der stammer fra det kan verificeres.

Ofte er der undtagelser

I Java undtagelser, er en liste over hvilke præsenteret nedenfor, anvendes oftest, så du bør beskrive hver af dem i detaljer:

  • ArithmeticException. Disse omfatter fejl i forbindelse med aritmetiske operationer. Det mest grelle eksempel - den division med nul.
  • ArrayIndexOutOfBoundsException - en appel til arrayelementet nummer, der overstiger summen af dens længde.
  • ArrayStoreException - forsøg på at tildele en inkompatibel element type array.
  • ClassCastException - et forsøg på at bringe den forkerte type til en anden.
  • IllegalArgumentException - bruger den forkerte argument i metoden opkald.
  • NegativeArraySizeException - en undtagelse, når du opretter en vifte af negativ størrelse.
  • NullPointerException - misbrug af referencer til null.
  • NumberFormatException - opstår, når en forkert snor konvertering til heltal.
  • UnsupportedOperationException - operation er ikke understøttet.

Disse eksempler repræsenterer de typer af ukontrolleret Java undtagelser. Men så ser kontrolleres:

  • ClassNotFoundException - klasse ikke fundet.
  • IllegalAcccessException - begrænse adgangen til klassen.
  • InterruptedException - afbrydelse af strømmen.
  • NoSuchFieldException - der er ingen obligatorisk felt.

Fortolkningen af undtagelserne

Apropos ofte stødt undtagelser bør bemærkes, at deres fortolkning i design, kan blive opfattet forkert. Næste er en kort liste forklarer mere detaljeret, hvor der kan være en uventet situation.

NullPointerException. Den allerførste tilfældet, når der er en undtagelse, er at appellere til en reference til et objekt, der er lig med nul. Det udstrækker sig også til nul klasse instansmetoder. NullPointerException kan blive kastet i tilfælde af at opnå en lige længde null array. For at undgå sådanne situationer vil periodisk kontrollere steder på nul.

ArrayIndexOutOfBoundsException. Ethvert program kan ikke eksistere uden brug af arrays. Følgelig kan hyppige anvendelse det generere og fejl. Undtagelse opstår, når en udvikler forsøger at få adgang en array element, der ikke er i indekset listen. For eksempel den ønskede værdi er over eller under nul længde. Meget ofte er et resultat af, at i array begynder med en score på nul.

fund

Håndtering af Java undtagelser - et kraftfuldt værktøj miljø, hvilket i høj grad letter arbejdet for programmøren og tillader ham at skabe en ren og blottet for fejl i koden. Om hvordan glat og stabilt fungerende applikation afhænger af status og omdømme udvikleren.

Selvfølgelig, i en mere eller mindre simple programmer til at spore unormale situationer meget lettere. Men i store automatiserede komplekser til et par hundrede tusinde linjer er det kun muligt som følge af langvarig test og debugging.

For Java undtagelse fejl hvorfra opstår i nogle programmer, tilbyde nogle virksomheder en belønning, når de finder entusiaster. Især værdsat af dem, der forårsager en overtrædelse af sikkerhedspolitiske softwaren.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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