На предыдущем этапе мы успешно преобразовали строку, содержащую только цифры, в целое число с помощью Integer.parseInt(). Но что произойдет, если строка содержит символы, не являющиеся цифрами? Давайте узнаем.
Когда метод Integer.parseInt() пытается преобразовать строку, которая не является корректным представлением числа, он выбрасывает исключение NumberFormatException. Это тип ошибки, указывающий на проблему с форматом строки числа.
Для элегантной обработки таких ошибок мы можем использовать блок try-catch. Блок try-catch позволяет нам "попробовать" выполнить фрагмент кода, который может вызвать ошибку, и если ошибка возникает, мы можем "перехватить" ее и обработать ее определенным образом, предотвращая аварийное завершение программы.
Давайте модифицируем нашу программу StringToInt.java, чтобы продемонстрировать это.
-
Откройте файл StringToInt.java в редакторе WebIDE.
-
Измените код, добавив блок try-catch и изменив входную строку:
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());
}
}
}
Вот что мы добавили:
String numberString = "abc";: Мы изменили строку на "abc", которая явно не является корректным целым числом.
try { ... }: Код внутри блока try - это то, что мы хотим попробовать выполнить. В данном случае это вызов Integer.parseInt().
catch (NumberFormatException e) { ... }: Если в блоке try возникает исключение NumberFormatException, будет выполнен код внутри блока catch.
System.out.println("Error: Could not convert the string to an integer.");: Эта строка выводит понятное для пользователя сообщение об ошибке.
System.out.println("Details: " + e.getMessage());: Эта строка выводит более подробную информацию об исключении, что может быть полезно для отладки.
-
Сохраните файл (Ctrl+S или Cmd+S).
-
Скомпилируйте модифицированную программу в терминале:
javac StringToInt.java
-
Запустите скомпилированную программу:
java StringToInt
На этот раз, так как строку "abc" нельзя преобразовать в целое число, исключение NumberFormatException будет перехвачено, и вы должны увидеть вывод, похожий на следующий:
Error: Could not convert the string to an integer.
Details: For input string: "abc"
Вместо аварийного завершения программы блок catch обработал ошибку и вывел полезное сообщение. Это намного лучше для пользователя!
Использование блоков try-catch является важной частью написания надежных программ, которые могут обрабатывать неожиданный ввод или ситуации.