Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых ошибок, н.п
try:
return transaction_service.get(some_args)
except service_exc.UserNotFound:
raise exc.ObjectNotExist('User')
except service_exc.WalletNotFound:
raise exc.ObjectNotExist('Wallet')
Как избежать дублирование кода в многих функциях? Пришло на мысль написать вот такую функцию, не знаю, лучший ли это вариант:
def _handle_common_exc(func: Callable, *args) -> Any:
try:
return func(*args)
except service_exc.UserNotFound:
raise exc.ObjectNotExist('User')
except service_exc.WalletNotFound:
raise exc.ObjectNotExist('Wallet')
Fil de discussion Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых оши…
9 messages · –А А М K А Из возможных вариантов @contextlib.contextmanager def _handle_common_exc() -> Any: ... with _handle_common_exc(): ... Или просто в ошибке добавить атрибут описывающий нужную модель class UserNotFound(NotFoundError): model_name = "User" try: ... except NotFoundError as err: raise ObjectNotExists(err.model_name)М K