【发布时间】:2020-01-25 23:54:10
【问题描述】:
我发现直接在上升的异常类中实现验证很方便,例如:
>>> class IsNoneError(ValueError):
... @classmethod
... def validate(cls, value):
... if value is None:
... raise cls
...
>>> IsNoneError.validate(1)
>>> IsNoneError.validate(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in validate
__main__.IsNoneError
我要问的模式是将验证例程嵌入到异常类中,如果验证失败则引发该异常类。当我尝试在我的代码中使用单一责任原则时,我需要为每个失败设置一个单独的异常,然后可以通过单独的模块将其转换为任意自然语言的消息。 遵循该模式可以让我将所有验证代码放在一个地方。
由于太阳底下并没有什么新鲜事,我猜有人已经发明了这种异常验证器类模式。那么它的名字是什么,我可以用它来和其他pythonists交谈来理解?
另外,这种设计模式有哪些可能的缺点?
【问题讨论】:
标签: python exception design-patterns terminology