Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

277
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!