본문 바로가기
Java

[Java] 예외 발생 시 무한반복하기

by Dev_Green 2023. 1. 8.

문제상황 

아래와 같이 나이를 입력 받은 뒤, 입력받은 나이를 다시 출력해주는 프로그램을 작성한다고 가정해보자.

 

위와 같이 코드를 작성할 수 있다. 상식적인 선에서 본인의 나이를 정확하게 입력한다면 문제될 것이 없을 것이다. 

하지만 언제나 상식적인 일만 발생하는 것은 아니기에 예외처리를 통해 다양한 경우에 대비할 필요가 있다.

 

예외 경우로서 크게 두 가지를 생각해볼 수 있을 것 같다.

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