Camp/Java
[TIL/JAVA] try-catch문 무한 루프
뭔가 한다
2024. 10. 23. 20:26
내일 배움 캠프의 야구게임 프로젝트 진행 중 catch 문에 접근하게 되면 무한 루프에 빠지는 문제를 발견했다.
내부에는 print와 scanner밖에 없었기에 더 이해가 안되서 찾아봤다.
try {
System.out.print("숫자를 입력해 주세요: ");
inputResultNum = scanner.nextInt();
} catch (Exception e) {
System.out.println("숫자만 입력 가능합니다.");
// 다시 재 입력을 받을 수 있도록 continue
continue;
}
찾아보니 scanner로 받은 값이 정상처리되지 않아 버퍼에 남아있게 되어 발생하는 문제였다.
아래처럼 에러 발생 시 scanner를 초기화 시키니 문제가 해결 되었다.
try {
System.out.print("숫자를 입력해 주세요: ");
inputResultNum = scanner.nextInt();
} catch (Exception e) {
System.out.println("숫자만 입력 가능합니다.");
// 무한 루프 발생으로 인한 입력 초기화
scanner.next();
continue;
}
scanner.**() 를 통해 사용한 문자열을 모두 리턴하여 버퍼를 비움