我编写了一个函数,要求用户输入,直到用户输入正整数(自然数)。有人说我不应该在函数中抛出并捕获异常,而应该让函数的调用者来处理它们。
我不知道其他开发人员对此有何看法。我也可能在函数中滥用异常。这是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;
}
我对两件事感兴趣:
- 我应该让呼叫者担心异常吗?该功能的要点是它会困扰用户,直到用户输入自然数。函数的重点不好吗?我不是在谈论UI(用户无法在没有正确输入的情况下跳出循环),而是在讨论具有异常处理的循环输入。
- 您会说throw语句(在这种情况下)是对异常的滥用吗?我可以轻松地创建一个用于检查数字有效性的标志,并根据该标志输出警告消息。但这会在代码中添加更多行,我认为它是完全可读的。
问题是我经常编写一个单独的输入函数。如果用户必须多次输入数字,我将为输入创建一个单独的函数来处理所有格式的例外和限制。