ユーザーが正の整数(自然数)を入力するまで、ユーザーに入力を求める関数を作成しました。誰かが、関数で例外をスローしてキャッチしてはならず、関数の呼び出し元に例外を処理させるべきだと誰かが言った。
他の開発者はこれについてどう思いますか。また、おそらく関数の例外を誤用しています。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;
}
私は2つのことに興味があります。
- 発信者に例外について心配させる必要がありますか?この関数のポイントは、ユーザーが自然数を入力するまでユーザーを悩ませることです。機能のポイント悪いですか?私はUI(ユーザーが適切な入力なしにループから抜け出すことができない)について話しているのではなく、例外が処理されたループ入力について話しています。
- (この場合)throwステートメントは例外の誤用だと思いますか?数値の妥当性をチェックするフラグを簡単に作成し、そのフラグに基づいて警告メッセージを出力することができました。しかし、それによりコードに行が追加され、そのままでも完全に読みやすいと思います。
事は私がしばしば別の入力関数を書くことです。ユーザーが数値を複数回入力する必要がある場合は、すべてのフォーマット例外と制限を処理する入力用の別の関数を作成します。