python - 使用 python 装饰器时防止重复的异常引发
问题描述
如果我有一个装饰函数引发异常,然后在装饰器中捕获该异常,以执行一些逻辑。我怎样才能让装饰函数返回异常(而不在装饰器中再次引发它)。
装饰功能示例:
@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()
函数返回异常。如何在不引发两次相同异常的情况下实现这一目标?
解决方案
推荐阅读
- c# - 视图中的 Asp.Net MVC Cast 模型
- javascript - 如何获取数组Javascript中第二小的值的等效标签名称
- python - 如何使用 Python 和 BeautifulSoup 从本网站提取表格
- python - 使用 globals() 或 locals() 来避免创建很少需要的变量是个好主意吗?
- javascript - @import "@" 导致 vue 项目中断
- android - 导航组件片段在第一次执行后卡在运行最后一行代码
- bash - Bash:脚本中的 Diff cmd 未按预期工作
- python - 递归返回列表函数停止?
- javascript - 计算 PixiJs 初始渲染所花费的时间
- python - 如何通过合并另外两个数组来制作多个数组