문제상황
아래와 같이 나이를 입력 받은 뒤, 입력받은 나이를 다시 출력해주는 프로그램을 작성한다고 가정해보자.
위와 같이 코드를 작성할 수 있다. 상식적인 선에서 본인의 나이를 정확하게 입력한다면 문제될 것이 없을 것이다.
하지만 언제나 상식적인 일만 발생하는 것은 아니기에 예외처리를 통해 다양한 경우에 대비할 필요가 있다.
예외 경우로서 크게 두 가지를 생각해볼 수 있을 것 같다.
1. 숫자가 아닌 문자(알파벳, 한글, 특수문자 등)
2. 수이긴 하나 양의 정수가 아닌 수(-30, 15.5 등)
예외 발생 시 while 문을 통한 무한 반복
while 문 내에 try-catch문을 위치시키고 해당 try-catch문에서 예외가 발생하지 않을 때에만 break를 통해 while을 빠져나갈 수 있도록 설계한다.
코드 스니펫
import java.util.InputMismatchException;
import java.util.Scanner;
public class Ex {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int age = 0;
System.out.print("나이를 입력해 주세요.(숫자):");
while (true) {
try {
age = sc.nextInt();
if (age < 0) {
throw new InputMismatchException(); // 예외 발생 시 이하 코드는 실행되지 않음
}
break;
} catch (InputMismatchException e) {
sc = new Scanner(System.in); // 사용자로부터 입력값 다시 받아 초기화
System.out.print("예외발생!>> 양의 정수를 입력해주세요.:");
}
}
System.out.println("입력한 나이는 "+age+"입니다.");
}
}
'Java' 카테고리의 다른 글
[Java] Record로 DTO 만들기 (0) | 2024.05.30 |
---|---|
[Java] 추상 클래스와 인터페이스 비교 (0) | 2023.08.02 |
[Java] 생성자 라는 이름이 불러온 오해 (0) | 2023.07.19 |
Object 클래스 (1) | 2022.10.04 |