Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda