본문 바로가기
카테고리 없음

예외처리 15 ~ 18 - 사용자 정의 예외 만들기, 예외 되던지기, 연결된 예외

by Hwanii_ 2023. 8. 27.
728x90
사용자 정의 예외 만들기, 예외 되던지기

사용자 정의 예외 만들기

- 우리가 직접 예외 클래스를 정의 할 수 있다.
- 조상은 Exception과 RuntimeException 중 에서 선택 하기.

Exception 예외 >> 사용자가 발생 시키는 예외. (예외 처리 필수)
RuntimeException 예외 >> 개발자의 실수로 발생 시키는 예외. (예외 처리 선택)

예시)

class MyException extends Exception {

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

}

 

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

- 예외를 처리한 후에 다시 예외를 발생 시키는 것.
- 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외 처리 하는 것.
    예외를 모두 다 처리 하지 않고, 일부만 처리하고, 호출 한쪽으로 나머지 예외를 던지기
    그러면 나머지 예외를 호출 한 곳에서 받아서, 나머지 예외를 받아서 예외를 처리
    즉, 예외 분담 처리. (양쪽에 try-catch 가 있다)

 

연결된 예외 (chained exception)

- 한 예외가 다른 예외를 발생 시킬 수 있다.
- 예외 A가 예외 B를 발생 시키면, A는 B의 원인 예외. (cause exception)

Throwable initCause(Throwable cause)
>> 지정한 예외를 원인 예외로 등록.

Throwable getCause()
>> 원인 예외를 반환.

Throwable은 Exception과 Error 의 최고 조상 이다.

예외를 왜 연결 시킬까 ?

이유 1 : 여러 예외를 하나로 묶어서 다루기 위해.

이유 2 : checked (필수) 예외를 unchecked (선택) 예외로 변경 하려 할때.
반응형