반응형
질문
assert
를 디버깅 용도로만 사용하는 대신 표준 코드의 일부로 사용하는 것은 성능 또는 코드 유지 관리 문제가 있습니까?어떤 것이 더 좋은가요?
assert x >= 0, 'x is less than zero'
아니면
if x < 0: raise Exception('x is less than zero')
또한, 항상 확인되는
if x < 0 raise error
와 같은 비즈니스 규칙을try/except/finally
없이 설정하는 방법이 있습니까? 따라서 코드 전체에서 언제든지x
가 0보다 작으면 오류가 발생하도록 설정할 수 있습니다. 예를 들어 함수의 시작부에assert x < 0
을 설정하면 함수 내에서x
가 0보다 작아지는 모든 곳에서 예외가 발생합니까?
답변
어설션은 결코 발생하지 않아야 하는 조건을 테스트하는 데 사용되어야합니다. 목적은 손상된 프로그램 상태의 경우 초기에 충돌하도록하는 것입니다.
예외는 상상할 수있는 오류에 사용되어야하며, 거의 항상 자체 예외 클래스를 만들어야합니다.
예를 들어, 구성 파일에서 dict
로 읽어오는 함수를 작성하는 경우 파일의 부적절한 형식은 ConfigurationSyntaxError
를 발생시켜야하지만 None
을 반환하지 않을 것을 assert
할 수 있습니다.
예를 들어, x
가 사용자 인터페이스 또는 외부 소스에서 설정 된 값인 경우 예외가 가장 적합합니다.
만약 x
가 동일한 프로그램에서만 코드로 설정된 경우 어설션을 사용하십시오.
반응형
댓글