Українська
Відкрити в Telegram

Гілка Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых оши…

9 повідомлень · –
М
Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых ошибок, н.п 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')
  1. А
    А зачем тебе строка "User" в ошибке ObjectNotExists?
    1. М
      Это хттп ошибка, которая потом хендлится и выдается джсон ответ, будет что-то вроде 'User with given identifier not found', поэтому и передаю название модели
  2. А
    Можно ещё как декоратор вокруг обработчика реализовать, но так вроде тоже норм
    1. М
      Спасибо, тогда я могу быть спокоен)) Отказался от декоратора, потому как не нравится как выглядит, если декораторов больше, чем 1)
      1. K
        Вы увеличили карму Айван до 5070.25 (+16.66)
      2. А
        Из возможных вариантов @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)
          1. K
            Вы увеличили карму Айван до 5086.91 (+16.66)

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Межі індексу · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо