【发布时间】:2018-08-11 05:05:32
【问题描述】:
我有一个与装饰器有关的问题。例如我写了下一个装饰器,它处理错误,然后输出错误。
def handle_error(func):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as err:
print(err)
return wrapper
@handle_error
def raise_error():
return 1 / 0
raise_error()
但是,如果我想对 Flask 做同样的事情,那就行不通了。
@app.route('/')
@handle_error
def index():
return {'hello'}
if __name__ == '__main__':
app.run()
所以我猜,route 装饰器中引发的错误,对吗?如果是,我有一个问题:从技术上讲,我可以编写一个装饰器来处理来自 route 装饰器的所有异常?
【问题讨论】:
-
您的
index()视图函数没有引发任何错误(返回set不是错误),我们这样的自定义错误处理程序没有引发任何异常。您希望看到什么错误? -
index()函数,也将被route装饰器调用,在这条路线中我们会得到错误,实际上这是我需要的。通过装饰器控制任何烧瓶错误。
标签: python flask error-handling python-decorators