Java 36(인위적 예외클래스)

Kang.__.Mingu·2024년 5월 12일
0

Java

목록 보기
38/108

인위적 예외클래스

  • 프로그램 개발자가 필요에 의해 직접 선언한 예외 클래스

  • 예외클래스는 반드시 Exception 클래스를 상속받아 작성 - 일반예외

  • RuntimeException 클래스를 상속받아 작성 가능 - 실행 예외

  • 예외 클래스로 객체를 생성하여 인위적 예외 발생

  • 형식) throw new 예외클래스(값, 값, ...);
    => 예외클래스의 매개변수(예외메세지)가 작성된 생성자로 객체 생성

  • 인위적으로 발생되는 예외에 대한 예외클래스는 직접 작성하여 사용하는 것을 권장
    => 발생되는 예외를 명확히 구분하여 예외처리 가능


PasswordMismatchException

프로그램 개발자가 필요에 의해 직접 선언한 예외 클래스

public class PasswordMismatchException extends RuntimeException {
    // 예외처리에 필요한 값이 필요할 경우 필드 생성
    // private static final long serialVersionUID = 1L;
    // 필요하지 않을 경우 필드, 메소드 생성 안해도 됨

    public PasswordMismatchException() {
    }

    public PasswordMismatchException(String message) {
        // super 키워드를 사용하여 부모클래스의 생성자를 호출하여 객체를 생성할 때
        // 예외메세지를 전달하여 부모클래스 객체에 예외메세지 저장
        super(message);
    }
}

PasswordMatchApp

public class PasswordMatchApp {
    public static void main(String[] args) {
        /*// 비밀번호가 저장된 변수
        int password = 123456;

        Scanner sc = new Scanner(System.in);
        System.out.println("비밀번호 입력 >> ");
        int number = sc.nextInt();

        if(number == password){
            System.out.println("[결과] 키보드로 입력한 비밀번호가 맞습니다.");
        } else {
            System.out.println("[결과] 키보드로 입력한 비밀번호가 맞습니다.");
        }
        sc.close();
        */
        Scanner sc = new Scanner(System.in);
        int password = 123456;

        try {
            System.out.println("비밀번호 입력 >> ");
            int number = sc.nextInt();

            if(number != password){
                throw new PasswordMismatchException("[결과] 키보드로 입력된 비밀번호가 틀립니다.");
            }
            System.out.println("[결과] 키보드로 입력한 비밀번호가 맞습니다.");
        } catch (InputMismatchException e) {
            System.out.println("[에러] 숫자만 입력 가능합니다.");
        } catch (PasswordMismatchException e) {
            System.out.println(e.getMessage());
        } catch (Exception e) {
            System.out.println("[에러] 예기치 못한 예외가 발생했습니다.");
        } finally {
            sc.close();
        }
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글