Ich habe eine Funktion geschrieben, die einen Benutzer zur Eingabe auffordert, bis der Benutzer eine positive Ganzzahl (eine natürliche Zahl) eingibt. Jemand sagte, ich sollte keine Ausnahmen in meiner Funktion auslösen und abfangen und den Aufrufer meiner Funktion damit umgehen lassen.
Ich frage mich, was andere Entwickler darüber denken. Ich missbrauche wahrscheinlich auch Ausnahmen in der Funktion. Hier ist der Code in 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;
}
Ich interessiere mich für zwei Dinge:
- Sollte ich den Anrufer über Ausnahmen sorgen lassen? Der Punkt der Funktion ist, dass sie den Benutzer nervt, bis der Benutzer eine natürliche Zahl eingibt. Ist der Punkt der Funktion schlecht? Ich spreche nicht von der Benutzeroberfläche (Benutzer kann ohne ordnungsgemäße Eingabe nicht aus der Schleife herauskommen), sondern von Schleifeneingaben mit Ausnahmen.
- Würden Sie sagen, dass die throw-Anweisung (in diesem Fall) ein Missbrauch von Ausnahmen ist? Ich könnte leicht ein Flag zum Überprüfen der Gültigkeit der Nummer erstellen und die Warnmeldung basierend auf diesem Flag ausgeben. Aber das würde dem Code mehr Zeilen hinzufügen und ich denke, er ist so wie er ist perfekt lesbar.
Die Sache ist, ich schreibe oft eine separate Eingabefunktion. Wenn der Benutzer eine Zahl mehrmals eingeben muss, erstelle ich eine separate Funktion für die Eingabe, die alle Formatierungsausnahmen und -einschränkungen behandelt.