He escrito una función que le pide al usuario que ingrese hasta que el usuario ingrese un número entero positivo (un número natural). Alguien dijo que no debería lanzar y capturar excepciones en mi función y debería dejar que la persona que llama de mi función las maneje.
Me pregunto qué piensan otros desarrolladores sobre esto. Probablemente también estoy haciendo mal uso de excepciones en la función. Aquí está el código en Java:
private static int sideInput()
{
int side = 0;
String input;
Scanner scanner = new Scanner(System.in);
do {
System.out.print("Side length: ");
input = scanner.nextLine();
try {
side = Integer.parseInt(input);
if (side <= 0) {
// probably a misuse of exceptions
throw new NumberFormatException();
}
}
catch (NumberFormatException numFormExc) {
System.out.println("Invalid input. Enter a natural number.");
}
} while (side <= 0);
return side;
}
Me interesan dos cosas:
- ¿Debo dejar que la persona que llama se preocupe por las excepciones? El punto de la función es que molesta al usuario hasta que el usuario ingrese un número natural. ¿Es malo el punto de la función? No estoy hablando de la interfaz de usuario (el usuario no puede salir del bucle sin la entrada adecuada), sino de la entrada en bucle con excepciones manejadas.
- ¿Diría que la declaración de lanzamiento (en este caso) es un mal uso de excepciones? Podría crear fácilmente una bandera para verificar la validez del número y enviar el mensaje de advertencia basado en esa bandera. Pero eso agregaría más líneas al código y creo que es perfectamente legible como es.
La cuestión es que a menudo escribo una función de entrada separada. Si el usuario tiene que ingresar un número varias veces, creo una función separada para la entrada que maneja todas las excepciones y limitaciones de formato.