74. 메소드가 던지는 모든 예외를 문서화하라

신명철·2022년 4월 28일
0

Effective Java

목록 보기
70/80

메서드가 던지는 예외는 그 메서드를 사용하는데 아주 중요한 정보다. 따라서 예외 하나하나를 문서화하는데 충분한 시간을 사용해야 한다.

검사 예외는 항상 따로 선언하고 각 예외가 발생하는 상황을 자바독의 @Throws 태그를 사용해 정확히 문서화 하자. 극단적인 예로 메서드가 Exception이나 Throwable을 던진다고 선언해서는 안된다. 메서드 사용자에게 예외에 대처를 위한 힌트를 제공하지 못하고 같은 맥락에서 발생할 여지가 있는 다른 예외도 삼켜버린다. 단 main 은 오직 JVM 만이 호출하기 때문에 Exception 을 던져도 괜찮다.

비검사 예외도 문서화해두면 좋다. 발생 가능한 비검사 예외를 문서로 남기는 일은 인터페이스 메서드에서 특히 중요한데, 이 조건이 인터페이스의 일반 규약에 속하게 되어 그 인터페이스를 구현하는 모든 구현체가 일관되게 동작하도록 해주기 때문이다.

메서드가 던질 수 있는 예외를 각각 @throws 태그로 문서화하고 비검사 예외는 메서드 선언의 throws목록에 넣지 말자.

검사냐 비검사냐에 따라 사용자의 대처가 달라지기 때문에 이 둘을 구분해야 한다. 자바독은 @throwsthrows 목록에 모두에 명시한 예외와, @throws 태그에만 명시한 예외를 시각적으로 구분한다.

한 클래스에 정의된 많은 메소드가 같은 이유로 같은 예외를 던진다면 그 예외를 클래스 설명에 추가하는 방법도 있다. NullPointerException이 가장 흔한 사례이다.

profile
내 머릿속 지우개

0개의 댓글