Español
Abrir en Telegram

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

9 mensajes · –
М
Всем привет! Есть ли способ хендлить общие ошибки методов? Вызываю метода сервиса и они выбрасывают пачку одинаковых ошибок, н.п 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 · Tecnología
4 169miembros43escriben en 30 días
Feed de la comunidad Abrir en Telegram

Un feed público abierto del índice de búsqueda ChatCrawler — el “Google del Telegram público”; se actualiza a medida que se rastrea la comunidad. Las horas se muestran en UTC.

Solo contenido público, API oficial de Telegram. Acerca de · Preguntas frecuentes · Límites del índice · Eliminar una página · Catálogo · Búsqueda · Cómo contamos