-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[#74][B팀] 메서드가 던지는 모든 예외를 문서화하라
- Loading branch information
Showing
1 changed file
with
53 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# 아이템74. [메서드가 던지는 모든 예외를 문서화하라](https://github.com/Meet-Coder-Study/book-effective-java/issues/74) | ||
|
||
|
||
|
||
메서드가 던지는 예외의 설명은 어디에 중요할까? 문서화를 할 때, 메서드를 올바르게 사용하기 위해서다. | ||
|
||
따라서, 메서드가 던지는 모든 예외를 문서화하는 것이 중요하다. | ||
|
||
|
||
|
||
**체크 예외는 항상 개별적으로 선언하라, 또한 어떠한 조건에서 예외가 발생하는지 기재하라** | ||
|
||
- javaDoc의 `@throws` 태그를 달아서 예외가 발생하는 조건을 설명하면 된다. | ||
- 여러 예외를 하나의 슈퍼 클래스 예외로 선언하지 마라. (`Exception`, `Throwable` 이 가장 대표적임) | ||
- 단 하나의 예외 사항이 있다면, main 함수에서 던지는 `Exception` 이나 `Throwable` 이 있다. | ||
|
||
|
||
|
||
언체크 예외는 다룰 수가 없다. 어떻게 문서화 해야할까? | ||
|
||
- 잘 문서화된 언체크 예외는 사전조건으로 설명하라.(아이템 56번) | ||
|
||
- 아이템 56번에 따르면, 모든 public 메서드는 사전조건(precondtions)를 설명해야 한다. | ||
|
||
- 특히, 인터페이스의 메서드가 던질 수 있는 언체크 예외를 문서화하는 것이 중요하다. | ||
|
||
|
||
|
||
**Javadoc의 @throws 태그를 사용하여 체크 예외에 대한 설명을 하라, 다만 언체크 예외에 throws 키워드를 사용하면 안된다.** | ||
|
||
- 만약 언체크 예외를 Javadoc의 `@throws` 태그로 명시하였다면, 예외가 체크되지 않았다는 강력한 시각적 암시를 나타낸다. | ||
|
||
|
||
|
||
**하나의 클래스의 여러 메서드가 던지는 예외가 같은 이유로 설명된다면, 클래스 수준의 문서화 주석을 남겨라** | ||
|
||
- 가장 대표적인 예는 `NullpointerException` 일 것이다. | ||
- 예를 들어, "이 클래스의 모든 메서드는 NullPointerException을 던질 수 있음" 이라고 설명하면 된다. | ||
|
||
|
||
|
||
## 정리 | ||
|
||
- 메서드가 던질 수 있는 모든 예외에 대해 문서화하라. | ||
- 구현 메서드(concret method) 뿐 만아니라, 추상 메서드(abstract method)의 예외 또한 문서화를 해야 한다. | ||
- 문서화를 할 때, Javadoc의 `@throws ` 키워드를 사용하라 | ||
- 메서드의 throws에 슈퍼클래스 하나로 예외를 던지지마라 | ||
- 언체크 예외는 throws 에 기재하지 마라. | ||
|
||
|
||
|
||
|
||
|