Предотвратить дублирование исключений при использовании python декораторов - PullRequest
1 голос
/ 14 февраля 2020

Если у меня есть декорированная функция, которая вызывает исключение, которое затем перехватывается в декораторе для выполнения некоторой логики c. Как я могу все еще заставить декорированную функцию возвращать исключение (не вызывая его снова в декораторе).

ПРИМЕР ДЕКОРИРОВАННОЙ ФУНКЦИИ:

    @ach_api_error()
    def retrieve(self, request, pk=None):

      profile = request.user.profile

      if not pk:
        raise CustomNotFoundException(detail="Not Found.")

      return Response(status=status.HTTP_200_OK)

ПРИМЕР ДЕКОРАТОРА:

def ach_api_error():
  def decorate(f):
    def applicator(*args, **kwargs):
        try:
            result = f(*args, **kwargs)
            return result
        except CustomNotFoundException:
           #
           # PERFORM SOME EXCEPTION LOGGING HERE
           #
           raise CustomNotFoundException(detail="Not Found.")
    return applicator
  return decorate

Я хочу, чтобы функция decorate() возвращала исключение. Как я могу добиться этого, не вызывая одно и то же исключение дважды?

...