Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

270
Visualizações
Manejo de excepciones a través de un decorador en Django

Estoy tratando de crear un decorador de manejo de errores en django y donde ocurre el registro en el decorador en caso de una excepción y la excepción se vuelve a generar en la función decorada que luego envía una respuesta http de error.

Pero cuando intento hacer esto, si agrego un bloque de excepción en la función decorada después de que se vuelve a generar la excepción del decorador, entonces solo se ejecuta el bloque de excepción de la función decorada y el bloque de excepción del decorador queda sin ejecutar.

MiDecorador.py

 def log_error(message): def decorator(target_function): @functools.wraps(target_function) def wrapper(*args, **kwargs): try: return target_function(*args, **kwargs) except Exception as e: print('except block of the decorator') exceptiontype, exc_obj, exc_tb = sys.exc_info() filename = traceback.extract_tb(exc_tb)[-2][0] linenumber = traceback.extract_tb(exc_tb)[-2][1] mylogger(message=str(e),description='Related to Registration',fileName=filename,lineNumber=linenumber, exceptionType = type(e).__name__) raise return wrapper return decorator

función decorada

 @log_error('message') def action(self, serializer): try: .................. .................. .................. .................. return Response(status=status.HTTP_200_OK, data={ "message":'link sent successfully'}) except Exception as e: print('except block of the decorated function') return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR, data={"message" : 'error sending link'})

Esto es imprimir la línea.

excepto bloque de la función decorada

y no la linea

excepto bloque del decorador

Si elimino el bloque Excepto de la función decorada, entonces se ejecuta el bloque Excepto del decorador.

Se agradece cualquier ayuda para comprender cómo se maneja este seguimiento de excepción en los decoradores.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Este es un comportamiento normal: ejecuta target_function desde el decorador y detecta la excepción dentro de él, por lo que el decorador no la ve. Creo que debe raise la excepción en target_function , como lo hizo en el decorador. Pero como tienes que devolver una Response en la excepción de la función decorada, el problema parece difícil de resolver...

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda