diff --git "a/10\354\236\245/\354\225\204\354\235\264\355\205\234_74/\353\251\224\354\204\234\353\223\234\352\260\200_\353\215\230\354\247\200\353\212\224_\353\252\250\353\223\240_\354\230\210\354\231\270\353\245\274_\353\254\270\354\204\234\355\231\224\355\225\230\353\235\274.md" "b/10\354\236\245/\354\225\204\354\235\264\355\205\234_74/\353\251\224\354\204\234\353\223\234\352\260\200_\353\215\230\354\247\200\353\212\224_\353\252\250\353\223\240_\354\230\210\354\231\270\353\245\274_\353\254\270\354\204\234\355\231\224\355\225\230\353\235\274.md" new file mode 100644 index 0000000..d276a87 --- /dev/null +++ "b/10\354\236\245/\354\225\204\354\235\264\355\205\234_74/\353\251\224\354\204\234\353\223\234\352\260\200_\353\215\230\354\247\200\353\212\224_\353\252\250\353\223\240_\354\230\210\354\231\270\353\245\274_\353\254\270\354\204\234\355\231\224\355\225\230\353\235\274.md" @@ -0,0 +1,19 @@ +# 아이템 74. 메서드가 던지는 모든 예외를 문서화하라 + +## 검사 예외는 항상 따로따로 선언하고, 각 예외 상황을 @throws 태그를 사용해 정확히 문서화하자. +- Exception이나 Throwable과 같이 공통 상위 클래스 던진다고 선언해서는 안 된다. +- 비검사 예외도 검사 예외처럼 문서화해두면 좋다. + + +## @throws 태그로 문서화하되, 비검사 예외는 메서드 선언부 throws에 넣지 말자. +```java +public void doSomething() throws RuntimeException { // 금지 + ... +} +``` +- 자바독 유틸리티가 `@throws` 태그와 throws 선언부에 명시한 예외를 시각적으로 구분해준다. +- 검사 예외냐 비검사 예외냐에 따라 사용자가 해야할 일이 다르므로 구분해주어야 한다. + + +## 한 클래스에 정의된 많은 메서드가 같은 이유로 같은 예외를 던진다면 클래스 설명에 추가하는 방법도 있다. +- 예시) 클래스 문서화 주석에 `모든 메서드는 인수로 null이 넘어오면 NullPointerException을 던진다.`를 표시하는 방법