[Effective Java] 메소드가 던지는 모든 예외를 문서화하자. |
-
Javadoc 의 @throws 태그를 사용해서 항상 checked 예외는 별도로 선언하고, 각 예외가 발생하는 상황을 정확하게 문서화하자.
메소드가 던지는 예외가 많다고 해서 메소드 명세에 각 예외를 정확하게 선언하지 않고, 그 예외 클래스의 대표적인 슈퍼 클래스만 함축해서 나타내면 안 된다.
-
unchecked 예외의 문서 내역은 메소드가 성공적으로 실행되기 위한 사전조건(precondition)을 효과적으로 나타낸다.
-
인터페이스에 정의된 메소드의 경우 자신이 던질 수 있는 unchecked 예외를 문서화하는 것이 "특히" 중요하다.
그 인터페이스의 보편적 계약 중 일부분이 되며, 인터페이스를 구현하는 여러 구현체들 간의 공통된 행동을 나타내기 때문이다.
-
Javadoc 의 @throws 태그를 사용해서 메소드가 던질 수 있는 unchecked 예외를 문서화 하자.
그러나 메소드 선언부의 throws 키워드에는 unchecked 예외를 넣지 말자.
-
만일 같은 클래스의 여러 메소드에서 동일한 이유로 어떤 한 가지 예외를 던진다면, 그 예외를 각 메소드에 개별적으로 문서화하는 것보다는 클래스의 문서화 주석에 그 예외의 설명을 추가하는 것이 좋다.
Summary
각 메소드에서 던질 수 있는 모든 예외를 문서화하자.
checked 예외는 물론 unchecked 예외도 마찬가지이며, 실제 메소드는 물론 추상 메소드도 마찬가지다.
메소드 선언부의 throws 키워드에는 checked 예외는 넣되, unchecked 예외는 넣지 말자.
만일 우리 메소드에서 던질 수 있는 예외를 문서화하는데 실패하면(혹은 안 하거나 잘못하면), 다른 사람들이 우리 클래스나 인터페이스를 사용하기 어려울 것이다.
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
[Effective Java] 실패 원자성을 갖도록 노력하자 (0) | 2017.03.03 |
---|---|
[Effective Java] 실패 상황 정보를 상세 메세지에 포함하자. (0) | 2017.03.02 |
[Effective Java] 하위 계층의 예외 처리를 신중하게 하자. (0) | 2017.02.27 |
[Effective Java] 표준 예외를 사용하자 (0) | 2017.02.24 |
[Effective Java] checked 예외의 불필요한 사용을 피하자 (0) | 2017.02.23 |
댓글