본문 바로가기
Camp/Java

[TIL/JAVA] try-catch문 무한 루프

by 뭔가 한다 2024. 10. 23.

내일 배움 캠프의 야구게임 프로젝트 진행 중 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.**() 를 통해 사용한 문자열을 모두 리턴하여 버퍼를 비움

'Camp > Java' 카테고리의 다른 글

[TIL/JAVA] AtomicInteger  (0) 2024.10.24
[JAVA] OOP  (0) 2024.10.09
[JAVA] 조건문, 반복문, 배열  (0) 2024.10.08
[JAVA] 01  (0) 2024.10.08