Где хранить пользовательский набор исключений?
Для использования в классах мне нужен набор исключений, наследую от Exceptions и храню набор исключений в модуле (в заголовке), структурирую примерно так:
class BaseUserError(Exception):
pass
class AccountError(BaseUserError):
pass
class DebitError(AccountError):
pass
class CreitError(AccountError):
pass
Есть желание перенести их в классы, где используются, как подклассы (для примера class Account, class Client и так далее). Кажется так более правильно. Кто где хранит и почему?
Ответы (1 шт):
Всё что вы пишете, из ряда исключения, кастомные сообщения об ошибках, модели реквестов/респонсов вам нужно выносить их в то месте, где они используются, или максимально к нему близко
То есть, вам нет смысла выносить сообщение об ошибке в другую библиотеку, если оно используется только в одном сервисе. Так же вам нет смысла его выносить в отдельный класс, если оно так же используется только в одном сервисе
Когда это нужно делать? Когда у вас различные части программы могут использовать (или быть зависимы) от кастомных блоков.
Для вашего вопроса. Если вы используете исключение только в одном месте, вы можете вынести это в отдельный класс и "положить" его возле места, где это исключение используется
Если вы хотите добавить глобальное исключение, которое сможет использоваться многими классами, вы можете это вынести на уровень библиотеки, где вы его будете использовать
Если уровень глобальности должен быть ещё выше, я бы сделал модуль что-то из рода Common или Abstractions куда бы вынес это исключение, что бы оно было доступно по иерархии для всей программы