J'ai écrit une fonction qui demande à un utilisateur de saisir jusqu'à ce que l'utilisateur entre un entier positif (un nombre naturel). Quelqu'un a dit que je ne devrais pas lancer et intercepter des exceptions dans ma fonction et laisser l'appelant de ma fonction les gérer.
Je me demande ce que les autres développeurs en pensent. J'utilise également probablement des exceptions dans la fonction. Voici le code 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;
}
Je m'intéresse à deux choses:
- Dois-je laisser l'appelant s'inquiéter des exceptions? Le point de la fonction est qu'elle harcèle l'utilisateur jusqu'à ce que l'utilisateur entre un nombre naturel. Le point de la fonction est-il mauvais? Je ne parle pas de l'interface utilisateur (l'utilisateur ne pouvant pas sortir de la boucle sans entrée appropriée), mais de l'entrée en boucle avec des exceptions gérées.
- Diriez-vous que l'instruction throw (dans ce cas) est une mauvaise utilisation des exceptions? Je pourrais facilement créer un indicateur pour vérifier la validité du numéro et afficher le message d'avertissement basé sur cet indicateur. Mais cela ajouterait plus de lignes au code et je pense qu'il est parfaitement lisible tel quel.
Le fait est que j'écris souvent une fonction d'entrée séparée. Si l'utilisateur doit saisir un nombre plusieurs fois, je crée une fonction distincte pour l'entrée qui gère toutes les exceptions et limitations de mise en forme.