이것은 모범 사례 문제에 관한 것입니다. 여기서이 질문을하는 것이 좋습니다. 우리 API의 일부로 사용될 인터페이스를 만들고 있습니다. 나는 getSomeObject()
이라는 메서드를 가지고 있으며, 뒤에서 논리를 모으고 SomeObject
을 반환합니다. 뒤에는 IllegalArgumentException
을 던지는 메서드를 호출하므로 내 getSomeObject()
메서드에서이 예외가 throw 될 수 있습니다. 내가 가진 문제는 API 사용자가 API의 내부 작동에 익숙하지 않아 예외가 던져진 이유를 이해할 수 없다는 것입니다. 인수는 내 메서드 내에서 만들어 지므로 사용자는이 인수가 있는지조차 모릅니다. 문서화를 시도했지만이 예외의 이유는 API 사용자를 혼란스럽게합니다. 그래서 제 질문은 이런 상황에 대해 가장 좋은 방법은 무엇입니까? 이 예외를 문서화하는 올바른 방법은 무엇입니까?알 수없는 인수로 인한 예외를 문서화하는 모범 사례
답변
아무런 인수도 취하지 않는 방법으로 IllegalArgumentException
을 던지기는 실제로 혼란 스럽습니다.
getSomeObject
외부의 항목이 제대로 정의되지 않은 경우 예외가 발생한다고 생각합니다. 어떻게 당신이 그것을 처리하는 경우, IllegalArgumentException가 던지는 내부 코드의 가능성이 있음을 말할 때
@throws IllegalStateException If member variable xyz is not initialised.
This can happen if method `init()` has not been
called before `getSomeObject`.
답변 해 주셔서 감사합니다. 사용자가'init()'메소드에 대해서 모른다면? – robonerd
@robonerd 결국 사용자는 API를 올바르게 사용할 수 있어야합니다. (i) 사용자가 IllegalArgumentException을 피하기 위해 추가 조치를 취할 수 있으며 추가 단계를 문서화해야합니다. (ii) 예외를 피하기 위해 코드를 수행해야하며이를 수행해야합니다.) 런타임에 API를 사용할 수 없도록 만드는 일이 발생할 수 있으며 API 사용자가 무언가가 잘못되었다는 것을 알 수 있도록 적절한 예외를 throw해야합니다 (예를 들어 데이터베이스 액세스가 사용 가능하지 않음). – assylias
내 대답은 (i) 또는 (iii) 사례와 관련이 있습니다. – assylias
: 그래서 당신은 어쩌면 IllegalStateException
을 던져, 그것은 당신의 javadoc에 대한 설명과 문서 수 있을까?
사용자가 잘못 입력 한 것이 원인입니까?
그렇다면 잡아서 처리해야하며, 던지려면 던져 넣어야합니다. 사용자가 이해할 수있는 예외로 번역되어야합니다.
아니면 그럴 가능성이 희박하며 순전히 이론적입니까?
사용자가 처리해야하는 유효한 예외 시나리오 인 경우 적절한 확인 된 예외를 throw하고 인터페이스에 선언해야합니다.
- 1. WPF 프로젝트를 문서화하는 모범 사례
- 2. 알 수없는 인수로 struct
- 3. 특정 예외를 작성하는 모범 사례
- 4. 필드에 알 수없는 항목이있는 문서 작성을위한 몽구스 모범 사례
- 5. 사용자에게 표시 할 예외를 throw하는 모범 사례
- 6. C#의 SQL에서 예외를 catch하는 모범 사례
- 7. 유틸리티 클래스에서 예외를 throw하는 모범 사례
- 8. GLUT 함수에서 예외를 처리하는 모범 사례
- 9. 모범 사례 CRUDS 모범 사례
- 10. 알려진 원인으로 인한 메모리 부족으로 인한 종료, 알 수없는 해결책
- 11. 알 수없는 인수로 객체를 초기화하는 방법은 무엇입니까?
- 12. Apikit - 상태 코드 모범 사례
- 13. Java의 모범 사례 변경 - 모범 사례 접근
- 14. BLL 오류 모범 사례
- 15. 예외 처리 모범 사례
- 16. Entity Framework 모범 사례 우수 사례
- 17. 스핑크스를 사용하여 예외를 문서화하는 방법
- 18. 모범 사례 -
- 19. 모범 사례
- 20. "모범 사례 "
- 21. 모범 사례
- 22. 모범 사례
- 23. 모범 사례?
- 24. 모범 사례
- 25. 모범 사례?
- 26. 모범 사례
- 27. WCF 전화 - 모범 사례
- 28. 예외 - 모범 사례
- 29. CodeIgniter의 모범 사례
- 30. 모범 사례 : Socket을 인수로 사용하는 메서드 테스트 단위?
오류의 원인을 설명하는 예외는 감쌀 수 있습니다. – millimoose
내 충고는 getSomeObject() 메서드 내에서 IllegalArgumentException을 catch하고 api에 특정한 예외를 throw하는 것입니다. – Davz