-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
아이템 73. 추상화 수준에 맞는 예외를 던지라 #73
Comments
추상화 수준에 맞는 예외를 던지라문제점
해결상위 계층에서 예외 번역을 한다예외 번역(exception translation)
try {
... // 저수준 추상화를 이용
} catch (LowerLevelException e) {
// 추상화 수준에 맞게 번역
throw new HigherLevelException(...);
} 저수준 예외가 필요하면 예외 연쇄 사용힌다예외 연쇄(exception chaining)
try {
... // 저수준 추상화를 이용한다.
} catch (LowerLevelException cause) {
throw new HighetLevelException(cause);
}
// 예외 연쇄용 생성자
class HigherLevelException extends Exception {
HigherLevelException(Throwable cause) {
super(cause);
}
} 고수준 예외의 생성자는 예외 연쇄용으로 설계된 상위 클래스의 생성자에 원인(cause)을 건네주어 Throwable 생성자로 건네 지게 한다. 예외 연쇄는 문제의 원인을 프로그램에서 접근할 수 있게 해주며, 예외 번역을 남용하지 말자무작정 예외를 전파하는 것보다 예외 번역이 우수한 방법이지만, 남용하면 안된다. 핵심 정리
|
예외 번역과 예외 연쇄에 대해 알 수 있는 기회였습니다 |
저수준 예외를 처리하지 않고 바깥으로 던져서 정확한 에러가 무엇인지 로그에 안찍히는 탓에 실질적인 에러를 못 찾았었던 경험이 있는데요. |
No description provided.
The text was updated successfully, but these errors were encountered: