简体中文
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)
ССообщество Python ПрограммистовСообщество Python Программистов@python_scripts · 群组 · 科技
4 169成员4330 天内发言的人
社群信息流 在 Telegram 中打开

来自搜索索引的公开信息流 ChatCrawler ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法