Мне было удобно реализовывать проверку непосредственно в классах повышенных исключений, таких как:
>>> 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
Шаблон, о котором я спрашиваю, это встраивание процедуры проверки в класс исключений, которыйповышается, если проверка не пройдена .Поскольку я пытаюсь использовать принцип единой ответственности в своем коде, мне нужно иметь отдельное исключение для каждого сбоя, которое затем может быть преобразовано в сообщение на произвольном естественном языке отдельным модулем.Следование шаблону позволяет мне хранить весь мой код проверки в одном месте.
Поскольку под солнцем нет ничего нового, я думаю, кто-то уже изобрел этот шаблон класса проверки-исключения.Как его тогда назвать, чтобы я мог говорить с другими питонистами, чтобы понять?
Кроме того, каковы возможные недостатки этого шаблона проектирования?