상위 계층에서는 하위 계층에서 발생하는 예외를 반드시 받아서 상위 계층 추상화 수준에 맞는 예외로 바꿔서 던져야 한다. 이 숙어를 예외 변환이라 한다. 추상화 수준에 맞지 않는 예외를 던지게 되면, 메서드가 하는 일과 뚜렷한 관련성 없는 예외가 메서드에서 발생하기 때문이다. 추상화 수준이 낮은 곳에서 발생한 에외를 그대로 밖으로 전달하면 이러한 문제가 생긴다. 즉 추상화 수준이 높은 API가 오염되는 것이다.
예외 연결은 예외 변환의 특별한 사례다. 하위 계층에서 발생한 예외 정보가 상위 계층 외를 발생시킨 문제를 디버깅하는 데 유용할 때 사용된다. 하위 계층에서 발생한 예외(원인)는 상위 계층 예외로 전달된다.
예외 연결을 사용하면 프로그램 안에서 예외의 원인에 접근할 수 있을 뿐 아니라, 최초에 발생한 예외의 스택 추적 정보를 상위 계층 예외에 통합할 수 있다. 하지만 예외변환 기법을 남용하면 안된다. 가능하다면 제일 좋은 방법은 하위 계층에서 예외가 생기지 않도록 하는 것이다. 하위 계층 메서드에 인자를 전달하기 전에 인자 유효성을 미리 검사하는 것도 좋은 방법이다.
요약
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[예외]규칙63. 어떤 오류인지 드러내는 정보를 상세한 메세지에 담으라 (0) | 2017.05.07 |
---|---|
[예외]규칙62.메서드에서 던져지는 모든 예외에 대해 문서를 남겨라 (0) | 2017.05.07 |
[예외]규칙60. 표준 예외를 사용하라 (0) | 2017.05.06 |
[예외]규칙59. 불필요한 점검지정 예외 사용은 피하라 (0) | 2017.05.06 |
[예외]규칙58. 복구 가능 상태에는 점검지정 예외를 사용하고, 프로그래밍 오류에는 실행시점 예외를 이용하라 (0) | 2017.05.06 |