En el paso anterior, convertimos con éxito una cadena que contiene solo dígitos en un entero utilizando Integer.parseInt(). Pero, ¿qué sucede si la cadena contiene caracteres que no son dígitos? Vamos a averiguarlo.
Cuando Integer.parseInt() intenta convertir una cadena que no es una representación válida de un número, lanza una NumberFormatException. Este es un tipo de error que indica un problema con el formato de la cadena numérica.
Para manejar estos errores de manera elegante, podemos utilizar un bloque try-catch. Un bloque try-catch nos permite "intentar" un fragmento de código que podría causar un error, y si se produce un error, podemos "capturarlo" y manejarlo de una manera específica, evitando que nuestro programa se bloquee.
Modifiquemos nuestro programa StringToInt.java para demostrar esto.
-
Abre el archivo StringToInt.java en el editor WebIDE.
-
Modifica el código para incluir un bloque try-catch y cambia la cadena de entrada:
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());
}
}
}
Esto es lo que hemos agregado:
String numberString = "abc";: Cambiamos la cadena a "abc", que claramente no es un entero válido.
try { ... }: El código dentro del bloque try es lo que queremos intentar. En este caso, es la llamada a Integer.parseInt().
catch (NumberFormatException e) { ... }: Si se produce una NumberFormatException dentro del bloque try, se ejecutará el código dentro del bloque catch.
System.out.println("Error: Could not convert the string to an integer.");: Esta línea imprime un mensaje de error amigable para el usuario.
System.out.println("Details: " + e.getMessage());: Esta línea imprime más detalles sobre la excepción, lo que puede ser útil para la depuración.
-
Guarda el archivo (Ctrl+S o Cmd+S).
-
Compila el programa modificado en la Terminal:
javac StringToInt.java
-
Ejecuta el programa compilado:
java StringToInt
Esta vez, dado que "abc" no se puede analizar como un entero, se capturará la NumberFormatException y deberías ver una salida similar a esta:
Error: Could not convert the string to an integer.
Details: For input string: "abc"
En lugar de que el programa se bloquee, el bloque catch manejó el error e imprimió un mensaje útil. ¡Esta es una experiencia de usuario mucho mejor!
Utilizar bloques try-catch es crucial para escribir programas robustos que puedan manejar entradas o situaciones inesperadas.