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.