? Unntak kan føre til Java-programmer til å krasje , men når de brukes riktig , de også tillate programmerere til å lage programmer som kan takle uventede hendelser . Antall unntak oppstår ofte når programmer prøver å analysere tallene , konvertere tekststrenger til numeriske verdier . Hvis et Java -program bruker en metode der et tall er ikke av forventet type, kan det kaste en tallformat Unntak . Ved å forstå unntak, kan du lære å lage programmer som gir pålitelig funksjonalitet. Exception Typer
Java -programmer kan kaste mange forskjellige typer unntak. The Number Format Unntak er den vanligste numeriske unntak. En runtime unntak, utvider den Illegal Argument Exception klasse. Normalt er dette unntaket oppstår når du bruker en metode for å forsøke å analysere en streng som et tall, men innholdet i strengen er ikke et tall av riktig type . Fordi det er en ukontrollert unntak, kan programmene kompilere uten Integrated Development Environment advarer deg om den mulige feilen. The Number Format Unntak oppstår bare hvis et program passerer upassende innspill til en metode , slik at du kan bare oppdage det når programmet kjører .
Årsaker
Java-språket wrapper klasser gir objekt representasjoner av de primitive antall typer, inkludert heltall , float og double . Ved hjelp av disse klassene , kan programmer analysere strengeverdier som numeriske typer , som følger : en
Integer.parseInt ( " 3 ");
Denne koden utfører uten feil , fordi passert streng parameteren inneholder en tallverdi. Imidlertid fører følgende metode samtale Java å kaste et tallformat Unntak fordi strengen ikke inneholder et nummer:
Integer.parseInt ( "r ");
Følgende kode fører også unntaket, fordi selv om strengen er et tall , er det ikke et heltall:
Integer.parseInt ( " 3.5 ");
Alle disse kode utdrag kompilere og kjøre , så programmereren kan bare bli klar over feilen under kjøring. Verdiene er normalt ikke levert eksplisitt , men leses fra en ekstern kilde eller variabel verdi.
Catching
Du kan ta tallformat Unntak hvis programmene sannsynligvis vil kaste dem . Ved å legge til nummeret ditt analysekoden til en prøve blokk , og deretter levere en fangst svart etter det , kan du lage programmer som vil fortsette å fungere selv om et tallformat Unntak oppstår. Følgende eksempelkode demonstrerer denne strukturen : en
try { Integer.parseInt ( numString ) ;} catch ( NumberFormatException numExc ) { System.out.println ( numExc.getMessage ( )); }
parse streng i dette tilfellet er representert som en variabel referanse, så innholdet er ukjent . Hvis strengen innholdet ikke kan analyseres som et heltall , hopper koden umiddelbart til catch-blokken , hvor du kan levere alternativ behandling.
Kaster
Samt fanger unntak, kan utviklere lage Java-programmer der de kaster tilpassede unntak. Dette er en vanlig taktikk med ukontrollert unntak som nummer Format . Følgende endret koden demonstrerer : en
fangst ( NumberFormatException numExc ) { throw new BadNumberException (); }
p Dette lar programmerere å definere sine egne tilpassede unntak klassen, som kan være en kontrollert type, og for å gi et egnet mestringsstrategi for søknaden.