Português
Abrir no Telegram

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

9 mensagens · –
М
Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых ошибок, н.п 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)
ССообщество Python ПрограммистовСообщество Python Программистов@python_scripts · grupo · Tecnologia
4 169membros43escrevendo em 30 dias
Feed da comunidade Abrir no Telegram

Um feed público aberto do índice de busca ChatCrawler — “o Google do Telegram público”; atualizado à medida que a comunidade é rastreada. Horários em UTC.

Somente conteúdo público, API oficial do Telegram. Sobre · Perguntas frequentes · Limites do índice · Remover uma página · Catálogo · Busca · Como calculamos