이런 상황이 있다고 가정 해보자!

Untitled

저수준 예외를 처리 하지 않으면서, 그대로 바깥으로 전파할 때 생기는 일?

저수준 예외를 처리하지 못한다면, 어떻게 해줘야 할까?

예외가 발생하면 우리는 흔히들 아래와 같이 처리한다

지금처럼 저수준 예외를 예방하거나, 스스로 처리 할 수 없는 경우

저수준 예외를 잡아, 현재 상황에 맞는 추상화 레벨로 바꿔서 던지는 것이 좋다

try {
	.....
} catch (LowerLevelException e ) {
	throw new HigherLevelException(..);
}

 의 get 메소드

AbstractSequentialList 의 get 메소드

예외 연쇄는?(exception chaining)

예외를 번역 할 때, 저수준 예외가 디버깅에 도움이 된다면, 근본원인(cause) 를 감싼 예외를 생성하여 던지는 것이 좋다.

		try {
			// .......
		} catch (IllegalArgumentException e) {
			throw new CreationFailException(e);
		}
public CreationFailException(Throwable cause) { ... }

예외 연쇄는, 문제의 원인을 프로그램에서 접근할 수 있게 해 주며, 원인을 상위 레벨 예외의 스택 추적 정보에 잘 통합 해 준다.

아래와 같이 상위 레벨 예외의 스택 추적 정보에 잘 통합되어 출력되는 것을 확인할 수 있다.