무엇 당신이 썼다는 전제 조건은이고 필수 요소는 계약 번호입니다. 그 용어에 대한 Google (또는 "StackOverflow":) 및 그 정보에 대한 좋은 정보와 나쁜 정보가 많이 있습니다. 이 방법에는 사후 조건 및 클래스 불변의 개념도 포함됩니다.
어설 션이 유효한 메커니즘이라는 점을 분명히하십시오.
물론 보통은 (not always) 이 아닙니다.은 릴리스 모드로 검사되었으므로 릴리스하기 전에 코드를 테스트해야합니다.
어설 션을 사용하도록 설정하고 어설 션을 위반하면 어설 션을 사용하는 일부 언어 (및 특히 에펠에서)의 표준 동작은 어설 션 위반 예외를 throw하는 것입니다.
어설 션을 선택하지 않은 경우 이 아닌 코드 라이브러리를 게시하는 경우 편리하거나 권장할만한 메커니즘이거나 부정확 한 직접 입력을 유효화하는 방법 (분명히)이 아닙니다. "잘못된 입력"이있는 경우 프로그램의 정상적인 동작의 일부로 입력 유효성 검사 레이어을 디자인해야합니다. 내부 모듈에서 어설 션을 자유롭게 사용할 수 있습니다. 그들이 잘못라면
다른 언어, 자바처럼,이 언어에 의해 강력한 ""주장 "또는 디자인이없는 주로하기 때문에, 명시 적으로 확인 인수의 전통의 더 예외를 던지고있다 계약 "전통.
는 (그것은 몇 가지 이상한 것처럼 보일 수 있습니다, 그러나 나는 반드시 악 존경, 그리고 전통의 차이를 찾을 수 있습니다.) 참조에게 또한 this related question합니다.
그래서 대답은 예외 예외를 던져야한다는 것입니다. 고맙습니다. (왜 당신의 이름 옆에 '커뮤니티 위키'라고 말합니까?) – user62572
커뮤니티 위키 파트는 다른 사람들이이 답변을 확장하고 편집 할 수있게합니다. –
제어 흐름에 예외를 사용하지 않는다는 사실을 신속하게 언급해야합니다. 예외를 throw하는 것은 다른 코드가 실패하지 않도록 보호하는 것입니다. 예외를 작성하는 방법에 대한 전체적인 하위 주제가 있으며, 확인하는 곳, 항상 확인하는 곳 등이 있습니다. –