Search

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

생성일
2023/08/15 05:31
챕터
10장 - 예외

요약

메서드가 던지는 예외를 문서화하자.

메서드가 던지는 예외를 문서화 하기

메서드가 던지는 예외는 해당 메서드를 올바로 사용하는데 아주 중요한 정보이기 때문에, 각 메서드마다 던지는 모든 예외를 문서화 해야 한다.
예외들을 문서화할 때는 다음 내용들을 지키는 것이 좋다.
검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하자.
공통 상위 클래스 하나로 뭉뚱그려 선언하면 각 예외에 대처할 수 있는 힌트를 주지 못한다.
또한 발생할 여지가 있는 다른 예외들까지 삼켜버릴 수 있어 API 사용성을 크게 떨어뜨린다.
필수는 아니지만 비검사 예외도 검사 예외처럼 정성껏 문서화해두면 좋다.
비검사 예외는 프로그래밍 오류를 뜻하는데, 자신이 만든 코드가 어떤 오류들이 발생할 지 생각해보면서 해당 오류가 나지 않도록 코딩하게 된다.
비검사 예외를 문서화하는 것은 인터페이스 메서드에서는 특히 중요한데, 해당 조건이 인터페이스의 일반 규약에 속하게 되어 해당 인터페이스를 구현한 모든 구현체가 일관된 동작을 하도록 만들어준다.
비검사 예외는 throws 목록에 넣지는 말고, 검사 예외와 분리해주는 것이 좋다.
NullPointerException과 같이 하나의 클래스에 정의된 많은 메서드가 같은 이유로 같은 예외를 던진다면, 해당 예외를 각각의 메서드가 아닌 클래스 설명에 추가하는 방법이 있다.