1. 프로그램을 작성하다보면 코드의 오류로 발생하는 예외도 있지만 프로그램의 규칙에 위배되어
발생해야하는 경우도있다.
2. 만약, 프로그램의 규칙에 위배되어 예외를 발생해야 할 경우, 강제로 예외를 발생시킬수있다.
3. 일회성으로 사용하기 용이하다.
4.EX)나이를 입력받을때 정수로 입력받지만 음수도 정수이기 때문에 강제예외처리를 사용한다.
바로 예제를 보자
public class Ex1_try_Catch {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int val = 0;
while (true) {
try {
System.out.println("숫자를 입력하세요(0~50) 또는 -1을 입력하여 종료하세요: ");
String input = scan.next();
// -1을 입력하면 종료
if (input.equals("-1")) {
break;
}
// 문자를 정수로 변환
val = Integer.parseInt(input);
if (val < 0 || val > 50) {
throw new Exception("숫자 허용 범위가 아닙니다.");
}
} catch (NumberFormatException e) {
System.out.println("에러 메시지: 숫자가 아닌 문자를 입력했습니다.");
} catch (Exception e) {
System.out.println("에러 메시지: " + e.getMessage());
}
}
}
}
프로그램을 종료하기 위해서는 -1을 입력해야한다.
즉 프로그램을 종료하기위해 범위에 벗어난 값을 입력해야한다. 이것이 바로 강제예외처리이다.
코드를 위에서부터 보자
while 반복문이 무한으로 돌아간다. 그리고 try안에 입력값을 받아서 input변수에 String타입으로 저장시킨다.
그 후 만약에 입력한 값이 "-1" 이라면 break문을 사용해서 프로그램을 그대로 종료시켜준다.
하지만 -1 외의 값이 들어가면 input안의 문자값을 정수로 형변환하여 정수타입 변수val에 저장한다.
1. 정수로 변환한 값이 0보다 작거나 50보다 크다면 출력문을 throw를 통해 넘긴다.
2. catch문으로 들어와서 정수가 아닌 문자입력시 에러메세지 출력한다.
3. catch문에서 아까 1번에 넘긴 에러출력문을 받아서 출력해준다.
'(혼) (공) (자)' 카테고리의 다른 글
자바-알아두면 좋은것들 (0) | 2024.01.25 |
---|---|
사용자 정의 예외처리 (0) | 2024.01.24 |
throws (0) | 2024.01.23 |
finally (1) | 2024.01.23 |
try-catch (0) | 2024.01.22 |