728x90
메서드가 던지는 예외를 문서화하는데 충분한 시간을 쏟아야한다.
검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 JavaDoc의 @throws 태그를 활용하여 정확히 문서화하라.
- Exception이나 Throwable 같은 공통 상위 클래스가 아니라 구체적인 예외 클래스로 남겨놓을것
- 각 예외에 대처할 힌트도 못 줄뿐더러 다른 예외들까지 포함시켜버려 API 사용성을 떨어뜨린다.
- 단, main 함수는 JVM만이 호출하므로 Exception을 던져도 괜찮다.
- public 메서드에 대해서는 비검사 예외도 문서화 하는 것이 좋다. 자신이 일어난 예외상황을 무엇인지 설명해주면 프로그래머가 해당 오류가 나지 않도록 코드를 고칠수 있다.
비검사 예외와 검사예외를 구분하는 것이 좋다.
- 메서드가 던질수있는 예외를 @throws 태그로 문서화하되 비검사 예외는 메서드 선언의 throws 목록에 넣지는 말자.
- 검사냐 비검사냐에 따라 사용자가 해야할일이 달라지므로 이 둘을 확실히 구분 해주는 것이 좋다.
- 자바 독 유틸리티는 메서드 선언의 throws 절에 등장한 예외(검사 예외)와 그렇지 않은 예외(비검사 예외)를 시각적으로 구분해준다.
@throws UnCheckedException
@throws CheckedException
void someMethod throws CheckedException //검사예외만 작성하라
{
}
- 문서화가 항상 가능한 것은 아니다. (메서드에서 참조한 외부 라이브러리의 클래스에서 새로운 비검사 예외를 던지게 된 경우)
- 같은 클래스에서 정의된 메서드들이 같은 이유로 같은 예외를 던진다면 메서드 단위 예외가 아니라 클래스 설명에 추가하는 것도 한 방법.(NullPointerException)
'JAVA > Effective Java' 카테고리의 다른 글
item 81) wait와 notify보다는 동시성 유틸리티를 애용하라 (0) | 2021.04.17 |
---|---|
item 73) 추상화 수준에 맞는 예외를 던지라 (0) | 2021.04.10 |
item 72) 표준 예외를 사용하라. (0) | 2021.04.04 |
item 71) 필요 없는 검사 예외 사용은 피하라 (0) | 2021.04.04 |
item 62) 다른 타입이 적절하다면 문자열 사용을 피하라 (0) | 2021.03.27 |