사용자가 양의 정수 (자연수)를 입력 할 때까지 사용자에게 입력을 요청하는 함수를 작성했습니다. 누군가 내 함수에서 예외를 던지고 잡아서는 안되며 내 함수 호출자가 예외를 처리하도록해야한다고 말했습니다.
다른 개발자들이 이것에 대해 어떻게 생각하는지 궁금합니다. 또한 함수에서 예외를 잘못 사용하고 있습니다. 자바 코드는 다음과 같습니다.
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 문 (이 경우)이 예외의 오용이라고 말 하시겠습니까? 숫자의 유효성을 검사하는 플래그를 쉽게 만들고 해당 플래그를 기반으로 경고 메시지를 출력 할 수 있습니다. 그러나 그것은 코드에 더 많은 줄을 추가 할 것이고 나는 그것이 그대로 완벽하게 읽을 수 있다고 생각합니다.
문제는 종종 별도의 입력 함수를 작성한다는 것입니다. 사용자가 여러 번 숫자를 입력 해야하는 경우 모든 서식 예외 및 제한 사항을 처리하는 별도의 입력 함수를 만듭니다.