는 standard exceptions 중 어느 것이에서 NotReadyException
을 유도하는 것이 가장 적절할 것, 내가 지금개체가 올바른 상태가 아닙니다. 어떤 예외가 적절한가?
class Rocket(object):
def __init__(self):
self.ready = False
def prepare_for_takeoff(self):
self.ready = True
def takeoff(self):
if not self.ready:
raise NotReadyException("not ready!")
print("Liftoff!")
을 말해봐? self
의 상태/값이 잘못되었으므로 ValueError
이 될까요?
내 유스 케이스는 일종의 기본 제공 예외를 던지는 것으로 내 인터페이스를 문서화하는 것을 선호하지만 실제로 하위 유형을 포기할 자유가 있으므로 필요할 때 "개인적으로"보다 세밀하게 처리 할 수 있습니다. . 귀하의 충고는 여전히 적용됩니까? 라이브러리 별 예외 클래스로 인터페이스를 혼란스럽게하고 싶지 않습니다. –
@larsmans : 표준 조언은 외부 API 목적을위한 모듈에서 하나의 응용 프로그램 특정 예외입니다. 종종 "Error"와 같은 일반적인 이름으로 클라이언트는 except module.Error :'를 할 수 있습니다. –
@larsmans : 문서의 유스 케이스가 중요하지 않습니다. 취급을위한 유스 케이스가 지표입니다. 당신이 예외와 'ValueError' **를 정확히 처리하지 않는다면 같은 일이 아닙니다. 클래스 정의는 구조와 동작을 캡슐화합니다. 예외 구조는 대개 흥미롭지 않습니다. 예외 동작은 흥미로운 사용 사례입니다. 그리고 그것은 다른 무엇보다도'except' 조항으로 귀결됩니다. –