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
상황에 부합한다면 항상 표준 예외를 재사용하자. Exception, RuntimeException, Throwable, Error는 직접 재사용하지 말자.
예외도 코드와 마찬가지로 재사용하는 것이 좋다. 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다.
예) 복소수나 유리수를 다루는 객체를 작성한다면, ArithmeticException이나 NumberFormatException을 재사용할 수 있을 것이다.
상황에 부합한다면 항상 표준 예외를 재사용하자. 이때 API 문서를 참고해 그 예외가 어떤 상황에 던져지는지 꼭 확인해야 한다. 예외의 이름뿐 아니라 예외가 던져지는 맥락도 부합할 때만 사용한다.
더 많은 정보를 제공하길 원한다면, 표준 예외를 확장해도 좋다. 단, 예외는 직렬화할 수 있다는 사실을 기억하자. (직렬화에는 많은 부담이 따르니 나만의 예외를 새로 만들지 않는 것을 추천한다)
주요 쓰임이 상호 배타적이지 않은 탓에, 종종 재사용할 예외를 선택하기 어려울 때가 있다.
인수 값이 무엇이었든 어차피 실패했을 거라면, IllegalStateException을, 그렇지 않으면 IllegalArgumentException을 던지는 것을 기억하자.
The text was updated successfully, but these errors were encountered:
letmeloveyou82
No branches or pull requests
미리 읽는 결론
예외도 코드와 마찬가지로 재사용하는 것이 좋다. 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다.
표준 예외를 재사용하면 얻는 장점
가장 흔하게 재사용되는 예외를 알아보자
1-1) IllegalArgumentException
1-2) NullPointerException
1-3) IndexOutOfBoundsException
2) IllegalStateException
3) ConcurrentModificationException
4) UnsupportedOperationException
✔ Exception, RuntimeException, Throwable, Error는 직접 재사용하지 말자.
다른 상황에서는 다른 예외도 재사용할 수 있다.
예) 복소수나 유리수를 다루는 객체를 작성한다면, ArithmeticException이나 NumberFormatException을 재사용할 수 있을 것이다.
마치며
상황에 부합한다면 항상 표준 예외를 재사용하자. 이때 API 문서를 참고해 그 예외가 어떤 상황에 던져지는지 꼭 확인해야 한다. 예외의 이름뿐 아니라 예외가 던져지는 맥락도 부합할 때만 사용한다.
더 많은 정보를 제공하길 원한다면, 표준 예외를 확장해도 좋다. 단, 예외는 직렬화할 수 있다는 사실을 기억하자. (직렬화에는 많은 부담이 따르니 나만의 예외를 새로 만들지 않는 것을 추천한다)
주요 쓰임이 상호 배타적이지 않은 탓에, 종종 재사용할 예외를 선택하기 어려울 때가 있다.
인수 값이 무엇이었든 어차피 실패했을 거라면, IllegalStateException을, 그렇지 않으면 IllegalArgumentException을 던지는 것을 기억하자.
The text was updated successfully, but these errors were encountered: