Notice
Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

사용자 정의 예외 만들기, 예외 되던지기 본문

Java/JAVA2

사용자 정의 예외 만들기, 예외 되던지기

빌드이너프 2023. 6. 24. 12:40

사용자 정의 예외 만들기

우리가 직접 예외 클래스를 정의할 수 있다

상속을 통해 만든다

1. 조상은 Exception과 RuntimeException 중에서 선택

2. String 매개변수가 있는 생성자를 넣어준다

Exception: 사용자가 발생시키는 예외, 필수처리(try-catch 필수)

RuntimeException: 프로그래머의 실수로 발생시키는 예외, 선택처리(try-catch 선택)

class MyException extends Exception {
    MyException(String msg) { // 문자열을 매개변수를 받는 생성자
        super(msg); // 조상인 Exception 클래스의 생성자를 호출한다, Exception(String msg) 호출
    }
}

 

코드

Exception을 상속받았기 때문에 필수 처리예외(try-catch 필수 작성)임을 알 수 있다

class MyException extends Exception {
    // 에러 코드 값을 저장하기 위한 필드를 추가했다, 보통 안넣음
    private final int ERR_CODE; // 생성자를 통해 초기화한다
    
    MyException(String msg, int errCode) { // 생성자
        super(msg);
        ERR_CODE = errCode;
    }
    
    MyException(String msg) { // 생성자
        this(msg, 100); // ERR_CODE를 100(기본값)으로 초기화한다
    }
    
    public int getErrCode() { // 에러 코드를 얻을 수 있는 메서드도 추가했다
        return ERR_CODE; // 이 메서드는 주로 getMessage()와 함께 사용될 것이다
    }
}

예외 되던지기(exception re-throwing)

예외를 처리한 후에 다시 예외를 발생시키는 것

호출된 메서드와 호출된 메서드 양쪽(main, method1) 모두에서 예외처리하는 것

class ExceptionReThrowing {
    public static void main(String[] args) {
        try {
            method1();
        } catch (Exception E) {
            System.out.println("main메서드에서 예외가 처리되었습니다");
        }
    } // main 메서드 끝
    
    static void method1() throws Exception {
        try {
            throw new Exception();
        } catch (Exception e) {
            System.out.println("method1 메서드에서 예외가 처리되었습니다");
            throw e; // 다시 예외를 발생시킨다
        }
    } // method1 메서드 끝
}

method1 메서드에서 예외가 처리되었습니다
main메서드에서 예외가 처리되었습니다

'Java > JAVA2' 카테고리의 다른 글

hashCode()  (0) 2023.06.25
연결된 예외(chained exception)  (0) 2023.06.25
checked 예외, unchecked 예외  (0) 2023.06.22
예외 발생시키기  (0) 2023.06.22
멀티 catch 블럭  (0) 2023.06.22