处理烧瓶装饰器的错误

时间:2018-03-02 22:27:02

标签: python flask error-handling python-decorators

我有一个问题,与装饰者有关。例如,我编写了下一个处理错误的装饰器,然后输出错误。

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 装饰器的所有异常?

1 个答案:

答案 0 :(得分:0)

您可以在记录器中使用错误处理程序。

logger = app.logger()

@app.errorhandler(500)
def somehandler(e):
    logger.critical(e.description) # this is level of logger

因此,当发生500错误时,记录器将起作用。 您也可以自行犯错。

How can I implement a custom error handler for all HTTP errors in Flask?