Deutsch
Telegram

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

9 Nachrichten · –
М
Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых ошибок, н.п 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 · Gruppe · Technik
4 169Mitglieder43schreiben in 30 Tagen
Community-Feed In Telegram öffnen

Ein offener öffentlicher Feed aus dem Suchindex ChatCrawler — „Google für das öffentliche Telegram“; wird aktualisiert, während die Community gecrawlt wird. Zeiten in UTC.

Nur öffentliche Inhalte, offizielle Telegram-API. Über uns · FAQ · Grenzen des Index · Seite entfernen · Katalog · Suche · So zählen wir