문제

도메인 클래스 내부의 예외 처리 대신 주장을 사용하는 상황이 있습니까?

도움이 되었습니까?

해결책

매개 변수 유효성 검사 및 기타 검사에 예외를 사용하여 클래스 사용자가 의도 한대로 사용하는지 확인하십시오.

내부 일관성 검사에 어설 션을 사용하여, 즉 수업의 사용자가 아니라 망가졌습니다.

따라서 수업 사용자가 주장 실패를 보는 경우 코드를 사용하는 것이 아니라 코드의 내부 오류라는 것을 알고 있습니다. 반면에, GET 매개 변수 유효성 검사 예외가 있다면, 그들은 그것이 그들의 잘못이라는 것을 알고 있습니다.

다른 팁

절대. 주장은 유효한 형태의 오류 처리가 아닙니다. 테스트 중에 프로그램 오류를 식별하는 데 도움을주기 위해 사용하십시오.

어설 션은 절대 발생해서는 안되고 예상되지 않은 상태를 반영합니다. 응용 프로그램이 어떤 이유로 든 계속 실행할 수없는 경우, 예외는 "정상적인"것으로 간주되지는 않지만 예상치 못한 상태는 아니며, 이는 예상치 못한 상태를 나타냅니다. 회복 할 수 있습니다.

예를 들어, 힙에 공간을 할당 하고이 할당이 실패하면 계속 작동 할 수 없으므로 반환 된 주소가 유효하다고 주장합니다. 유효하지 않은 경우, 주장이 실패하고 프로그램이 실패합니다.

반면에, 읽기를 위해 파일을 열고 존재하지 않으면 상황에서 복구 할 수 있습니다.이 경우 예외가 발생하고 가능한 한 멀리 잡히고 처리됩니다).

일반적으로 어설 션은 디버깅 단계에서 가장 유용한 반면, 예외는 정기적 인 프로그램 흐름 및 오류 처리의 일부로 간주됩니다. 일반적인 합의는 생산 코드에서 어설 션을 비활성화해야한다는 것입니다 (명백한 충돌로부터 사용자를 보호하기 위해)는 이것이 비생산적이라고 주장하는 사고의 학교를 읽었으며, 사용자는 어설 션 실패를 볼 수 있어야한다는 것입니다. 문제를 올바르게보고 할 수 있습니다.

개인적으로, 나는 때때로 두 가지 기술을 결합합니다. 보통, 내가 믿지 않는 예외를 잡으면 던질 수 있다고 생각합니다. 위의 예를 들어, 파일을 열기 전에 파일의 존재를 확인하면 예외가 발생하지 않을 것으로 예상하지 않으며, 그렇다면 관련 어획 블록에서 주장을 제기함으로써 이것을 다루는 경향이 있습니다. 나는 이것이 Java에서 특히 유용한 기술을 완전히 점검하는 것을 발견했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top