카테고리 없음
[Effective Java] Item73. 추상화 수준에 맞는 예외를 던져라
niniz
2022. 8. 28. 11:08
메서드가 저수준 예외를 처리하지 않고 바깥으로 throw 해버릴 때 상위 메서드에서는 해당 메서드와 관련없는 예외가 발생하여 당황스러울 수 있습니다. 이는 내부 구현방식을 상위에 드러내어 상위 레벨 API를 오염 시킬 수 있고, 다음 릴리스에서 구현방식이 변경되면 다른 예외가 튀어나와 기존 클라이언트 프로그램을 깨지게 할 수도 있습니다.
예외 번역
상위 계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔 던져야 합니다.
try {
... // 저수준 추상화를 이용합니다.
} catch (LowerLevelException e) {
// 추상화 수준에 맞게 번역합니다.
throw new HigherLevelException(...);
}
예외 연쇄
저수준 예외가 디버깅에 도움이 된다면 예외 연쇄를 사용합니다. 예외 연쇄란 문제의 근본 원인인 저수준 예외를 고수준 예외에 실어 보내는 방식입니다.
try {
... // 저수준 추상화를 이용합니다.
} catch (LowerLevelException e) {
// 추상화 수준에 맞게 번역합니다.
throw new HigherLevelException(cause);
}
반응형