We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다.
따라서 메서드를 자세히 문서화하는데 충분한 시간을 쏟자(Item 56 참고)
메서드가 Exception이나 Throwable을 던진다고 선언하지 말고, 어떤 예외를 던지는지 정확히 알려주자.
메서드 사용자에게 각 예외에 대처할 수 있는 힌트를 주지도 못할 뿐더러, 같은 맥락에서 발생할 여지가 있는 다른 예외들까지 삼켜버릴 수 있어 API 사용성을 크게 떨어뜨림.
// 잘못 사용한 예 public void method() throws Exception { } // or public void method() throws Throwable { } // 올바르게 사용한 예 /** * @throws IllegalStateException */ public void method(String parameter) throws IllegalStateException { } /** * * @throws IllegalStateException * @throws SQLException * @throws NumberFormatException - params가 숫자형 데이터가 아닌경우 throw */ public void method(String params) throws IllegalStateException, SQLException, NumberFormatException { }
예외) main은 JVM만이 호출하므로 Exception을 던진다고 선언해도 괜찮다.
ex) NullPointException
이 클래스의 모든 메서드는 인수로 null이 넘어오면 NullPointerException을 던진다. 라고 적어도 좋다.
The text was updated successfully, but these errors were encountered:
yejin9858
No branches or pull requests
메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다.
따라서 메서드를 자세히 문서화하는데 충분한 시간을 쏟자(Item 56 참고)
1. 검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하자
메서드가 Exception이나 Throwable을 던진다고 선언하지 말고, 어떤 예외를 던지는지 정확히 알려주자.
메서드 사용자에게 각 예외에 대처할 수 있는 힌트를 주지도 못할 뿐더러, 같은 맥락에서 발생할 여지가 있는 다른 예외들까지 삼켜버릴 수 있어 API 사용성을 크게 떨어뜨림.
예외) main은 JVM만이 호출하므로 Exception을 던진다고 선언해도 괜찮다.
2. 메서드가 던질 수 있는 예외를 @throws 태그로 문서화하되, 비검사 예외는 메서드 선언의 throws 목록에 넣지 말자.
3. 한 클래스에 정의된 많은 메서드가 같은 이유로 같은 예외를 던진다면, 그 예외를 각각의 메서드가 아닌 클래스 설명에 추가하는 방법도 있다.
ex) NullPointException
이 클래스의 모든 메서드는 인수로 null이 넘어오면 NullPointerException을 던진다. 라고 적어도 좋다.
The text was updated successfully, but these errors were encountered: