Die NumberFormatException wird ausgelöst, wenn wir versuchen, eine Zeichenfolge in einen numerischen Wert wie Float oder Integer umzuwandeln, das Format der Eingabezeichenfolge jedoch nicht geeignet oder illegal ist. Mit „unzulässigem Format“ ist gemeint, dass, wenn Sie versuchen, eine Zeichenfolge in eine Ganzzahl zu analysieren, die Zeichenfolge jedoch einen booleschen Wert enthält, sie ein ungültiges Format hat. Wenn wir beispielsweise versuchen, eine Zeichenfolge in eine Ganzzahl zu analysieren, die Zeichenfolge jedoch null ist.
Liste auf Java
Es handelt sich um eine ungeprüfte Ausnahme. Es ist eine Unterklasse von IllegalArgumentException und implementiert die Serialisierbar Schnittstelle.
Konstruktoren von NumberFormatException
Konstrukteur | Beschreibung |
---|---|
NumberFormatException() | Dadurch wird eine NumberFormatException ohne angegebene detaillierte Nachricht erstellt. |
NumberFormatException(String s) | Dadurch wird eine NumberFormatException mit einer detaillierten angegebenen Nachricht in der Zeichenfolge s erstellt. |
Beispiel einer 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. } }
Ausgabe:
Häufige Gründe für NumberFormatException
Da NumberFormatException aufgrund des ungeeigneten Formats der Zeichenfolge für das entsprechende Argument der Methode, die die Ausnahme auslöst, auftritt, kann dies auf verschiedene Arten geschehen. Einige von ihnen werden wie folgt erwähnt:
- Die bereitgestellte Eingabezeichenfolge könnte null sein.
Beispiel- Integer.parseInt(null); - Die Eingabezeichenfolge ist möglicherweise leer.
Beispiel- Integer.parseInt(''); - Die Eingabezeichenfolge enthält möglicherweise nachgestellte Leerzeichen.
Beispiel- Integer.parseInt('123'); - Die Eingabezeichenfolge enthält möglicherweise ein führendes Leerzeichen.
Beispiel- Integer.parseInt(' 123'); - Die Eingabezeichenfolge kann alphanumerisch sein.
Beispiel- Long.parseLong('b2'); - Die Eingabezeichenfolge enthält möglicherweise eine Eingabe, die möglicherweise den Bereich des Datentyps überschreitet, in dem die analysierte Zeichenfolge gespeichert ist.
Beispiel- Integer.parseInt('135'); Der maximal mögliche Wert einer Ganzzahl kann 127 sein, aber der Wert in der Zeichenfolge ist 135, was außerhalb des zulässigen Bereichs liegt, sodass die Ausnahme ausgelöst wird. - Möglicherweise besteht eine Diskrepanz zwischen der Eingabezeichenfolge und dem Typ der Methode, die zum Parsen verwendet wird. Wenn Sie die Eingabezeichenfolge wie „1.0“ angeben und versuchen, diese Zeichenfolge in einen ganzzahligen Wert umzuwandeln, wird eine NumberFormatException-Ausnahme ausgelöst.
Beispiel- Integer.parseInt('1..0');
Wie vermeide ich NumberFormatException?
Die NumberFormatException wird im Wesentlichen dadurch verursacht, dass die Eingabezeichenfolge beim Parsen in einen numerischen Wert nicht gut formatiert oder ungültig ist. Um diese Ausnahme zu vermeiden, muss die bereitgestellte Eingabezeichenfolge gut formatiert sein.
Um eine gültige und gut formatierte Zeichenfolge zu erhalten, prüfen Sie zunächst, ob die Eingabezeichenfolge nicht null ist. Suchen Sie dann nach unnötigen Leerzeichen und entfernen Sie alle Leerzeichen. Anschließend führen Sie mehrere Prüfungen durch, um sicherzustellen, dass die Argumentzeichenfolge mit dem Typ der Methode übereinstimmt, die wir zum Parsen der Zeichenfolge verwenden. Wenn es sich bei der Methode um ParseInt() handelt, prüfen Sie, ob die Zeichenfolge einen ganzzahligen Wert hat, und führen Sie bei allen anderen Methoden ebenfalls die erforderlichen Prüfungen durch.
Seriell in Postgres
Um zu verhindern, dass ein Java-Programm eine NumberFormatException generiert, empfiehlt es sich immer, die Codezeilen, die diese Ausnahme auslösen können, wie unten gezeigt in einen Try-Catch-Block einzuschließen.
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 } } }