NumberFormatException i Java

NumberFormatException i Java

NumberFormatException blir kastet når vi prøver å konvertere en streng til en numerisk verdi som float eller heltall, men formatet til inndatastrengen er ikke passende eller ulovlig. Med ulovlig format menes det at hvis du prøver å analysere en streng til et heltall, men strengen inneholder en boolsk verdi, er den av ulovlig format. For eksempel - hvis vi prøver å analysere en streng til heltall, men strengen er null.

Det er et ukontrollert unntak. Det er en underklasse av UlovligArgumentUnntak og implementerer Serialiserbar grensesnitt.

Konstruktører av NumberFormatException

Konstruktør Beskrivelse
NumberFormatException() Dette konstruerer et NumberFormatException uten spesifisert detaljert melding.
NumberFormatException(String s) Dette konstruerer et NumberFormatException med en detaljert spesifisert melding i streng s.

Eksempel på NumberFormatException

 public class Example { public static void main(String[] args) { int a = Integer.parseInt(null); //throws Exception as //the input string is of illegal format for parsing as it is null. } }  

Produksjon:

NumberFormatException i Java

Vanlige årsaker til NumberFormatException

Siden NumberFormatException oppstår på grunn av det upassende formatet til strengen for det tilsvarende argumentet til metoden som kaster unntaket, kan det være forskjellige måter å gjøre det på. Noen få av dem er nevnt som følger-

  • Inndatastrengen som er oppgitt kan være null-
    Eksempel- Heltall.parseInt(null);
  • Inndatastrengen kan være tom-
    Eksempel- Integer.parseInt('');
  • Inndatastrengen kan ha etterfølgende mellomrom-
    Eksempel- Integer.parseInt('123');
  • Inndatastrengen kan ha et ledende mellomrom-
    Eksempel- Integer.parseInt(' 123');
  • Inndatastrengen kan være alfanumerisk-
    Eksempel- Long.parseLong('b2');
  • Inndatastrengen kan ha en inngang som kan overskride rekkevidden til datatypen som lagrer den analyserte strengen-
    Eksempel- Integer.parseInt('135'); Den maksimale mulige verdien av heltall kan være 127, men verdien i strengen er 135 som er utenfor området, så dette vil kaste unntaket.
  • Det kan være et misforhold mellom inndatastrengen og typen metode som brukes til å analysere. Hvis du oppgir inndatastrengen som '1.0' og du prøver å konvertere denne strengen til en heltallsverdi, vil den gi et NumberFormatException-unntak.
    Eksempel- Integer.parseInt('1..0');

Hvordan unngå NumberFormatException?

NumberFormatException er i utgangspunktet forårsaket fordi inndatastrengen ikke er godt formatert eller ulovlig mens den analyseres til en numerisk verdi. Så for å unngå dette unntaket, må inndatastrengen være godt formatert.

For å ha en gyldig og godt formatert streng, må du først sjekke om inndatastrengen ikke er null. Deretter, sjekk for unødvendige mellomrom og trim ut alle etter det, sett flere kontroller for å bekrefte at argumentstrengen samsvarer med typen metode som vi bruker for å analysere strengen. Hvis metoden er ParseInt(), sjekk at strengen har en heltallsverdi, og på samme måte for alle andre metoder, gjør de nødvendige sjekkene.

For å forhindre at et Java-program genererer et NumberFormatException, er det alltid en god praksis å legge ved kodelinjene som kan kaste dette unntaket i en try-catch-blokk som vist nedenfor-

 public class NumberFormatExceptionExample { private static final String inputString = '123.33'; public static void main(String[] args) { try { int a = Integer.parseInt(inputString); }catch(NumberFormatException ex){ System.err.println('Invalid string in argumment'); //request for well-formatted string } } }