Im vorherigen Schritt haben wir erfolgreich eine Zeichenkette, die nur Ziffern enthält, mit Integer.parseInt()
in eine Ganzzahl umgewandelt. Aber was passiert, wenn die Zeichenkette Zeichen enthält, die keine Ziffern sind? Lassen Sie uns das herausfinden.
Wenn Integer.parseInt()
versucht, eine Zeichenkette umzuwandeln, die keine gültige Darstellung einer Zahl ist, wirft es eine NumberFormatException
. Dies ist eine Art von Fehler, der auf ein Problem mit dem Format der Zahlenzeichenkette hinweist.
Um solche Fehler gracefully (elegant) zu behandeln, können wir einen try-catch
-Block verwenden. Ein try-catch
-Block ermöglicht es uns, einen Codeausschnitt auszuführen, der möglicherweise einen Fehler verursacht, und wenn ein Fehler auftritt, können wir ihn "auffangen" und auf eine bestimmte Weise behandeln, um zu verhindern, dass unser Programm abstürzt.
Lassen Sie uns unser StringToInt.java
-Programm ändern, um dies zu demonstrieren.
-
Öffnen Sie die Datei StringToInt.java
im WebIDE-Editor.
-
Ändern Sie den Code, um einen try-catch
-Block einzufügen und die Eingabezeichenkette zu ändern:
public class StringToInt {
public static void main(String[] args) {
String numberString = "abc"; // This string cannot be parsed as an integer
try {
int numberInt = Integer.parseInt(numberString);
System.out.println("The string is: " + numberString);
System.out.println("The integer is: " + numberInt);
} catch (NumberFormatException e) {
System.out.println("Error: Could not convert the string to an integer.");
System.out.println("Details: " + e.getMessage());
}
}
}
Hier ist, was wir hinzugefügt haben:
String numberString = "abc";
: Wir haben die Zeichenkette in "abc"
geändert, die eindeutig keine gültige Ganzzahl ist.
try { ... }
: Der Code innerhalb des try
-Blocks ist der, den wir ausführen möchten. In diesem Fall ist es der Aufruf von Integer.parseInt()
.
catch (NumberFormatException e) { ... }
: Wenn innerhalb des try
-Blocks eine NumberFormatException
auftritt, wird der Code innerhalb des catch
-Blocks ausgeführt.
System.out.println("Error: Could not convert the string to an integer.");
: Diese Zeile gibt eine benutzerfreundliche Fehlermeldung aus.
System.out.println("Details: " + e.getMessage());
: Diese Zeile gibt weitere Details zur Ausnahme aus, was für das Debugging hilfreich sein kann.
-
Speichern Sie die Datei (Strg+S oder Cmd+S).
-
Kompilieren Sie das geänderte Programm im Terminal:
javac StringToInt.java
-
Führen Sie das kompilierte Programm aus:
java StringToInt
Diesmal, da "abc"
nicht als Ganzzahl geparst werden kann, wird die NumberFormatException
gefangen, und Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Error: Could not convert the string to an integer.
Details: For input string: "abc"
Anstatt dass das Programm abstürzt, hat der catch
-Block den Fehler behandelt und eine hilfreiche Meldung ausgegeben. Dies ist eine viel bessere Benutzererfahrung!
Die Verwendung von try-catch
-Blöcken ist entscheidend für das Schreiben von robusten Programmen, die unerwartete Eingaben oder Situationen verarbeiten können.