study/퀴즈
[자바/java] 예외처리
김람보
2021. 10. 12. 09:38
1~100 사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라.
import java.util.Scanner;
public class Exception_quiz {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
int answer = (int)(Math.random()*100)+1;
int input = 0;
int count = 0;
do {
count++;
System.out.println("1과 100사이의 값을 입력하시오 >> ");
try {
// input = sc.nextInt();
input = new Scanner(System.in).nextInt();
if(answer > input) {
System.out.println("더 큰 수 입력하시오");
} else if (answer < input) {
System.out.println("더 작은 수 입력하시오");
} else {
System.out.println("맞힘");
System.out.println("시도 횟수는? " + count );
break;
}
} catch (Exception e) {
System.out.println("숫자를 입력하시오");
System.out.println("================");
continue;
}
}while(true);
}
}
숫자가 아닌 문자를 입력하였을 경우 예외가 발생해야하므로 try-catch문을 사용하여 예외를 처리해준다.
입력을 받는 부분에서 예외가 발생 할 수 있으므로 입력받는 부분을 try를 이용해 감싸주는데 이 때 Scanner객체 생성을 새로 해주지 않으면 input에는 이미 전에 입력받은 객체의 주소가 들어가 있기 때문에 바로 예외 처리가 되어서 catch문에 걸리므로 계속해서 반복하게 된다.
catch문에는 모든 예외를 처리해주는 Exception e을 사용했다.