[Java] 例外処理でリトライが無限ループする | slont_code

slont_code

// 人と知識をつなげるcode


テーマ:
ある標準入力に対してエラーをキャッチした時に、リトライするようなコードを書いてみたら、リトライ処理が無限ループしてしまいました。例えばこんなコード。
Scanner sc = new Scanner(System.in);
while(true) {
try {
System.out.println("数値を入力してください。");
int num = sc.nextInt();
System.out.println(num);
break;
} catch(InputMismatchException e) {
System.out.println("不正な入力です。");
}
}

これで文字などを入力すると、たぶん無限ループすると思います笑
これ、探してみたら知恵袋に上がってましたね。

 javaのtry~catchの無限ループ

なるほど、Scannerだとバッファに溜めたままなのか、ふむふむ。
ということで、上のコードは
Scanner sc = new Scanner(System.in);
while(true) {
try {
System.out.println("数値を入力してください。");
int num = sc.nextInt();
System.out.println(num);
break;
} catch(InputMismatchException e) {
System.out.println("不正な入力です。");
sc.next();
}
}

とすれば良いみたいです。勉強になりました。

ナナさんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります

Ameba人気のブログ

Amebaトピックス