@app.errorhandler
装饰器是 Flask 中的一个装饰器,用于注册一个错误处理函数。这个函数会在应用程序抛出指定类型的异常时执行,可以用来自定义错误页面或返回错误信息。
以下是一个示例
在这个示例中,我们定义了一个 /users/<int:user_id>
的路由,用于返回指定 ID 的用户信息。如果请求的用户不存在,我们会抛出一个 ValueError 异常,并返回一个 HTTP 404 响应。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/users/<int:user_id>')
def get_user(user_id):
# get user from database
user = None
if not user:
raise ValueError('User not found')
return jsonify(user)
@app.errorhandler(ValueError)
def handle_value_error(error):
return jsonify({'message': str(error)}), 404
if __name__ == '__main__':
app.run()
为了处理这个异常,我们使用 @app.errorhandler
装饰器注册了一个名为 handle_value_error
的函数。这个函数接受一个异常对象作为参数,并返回一个 JSON 格式的响应,其中包含了错误信息。
注意事项
需要注意的是,@app.errorhandler
装饰器的参数是一个异常类型。在注册时,我们需要指定希望处理的异常类型。
- 如果需要注册多个错误处理函数,可以在同一个应用程序中注册多个。在这种情况下,它们会按照注册的顺序依次执行。
- 如果同一个异常类型在多个错误处理函数中都有对应的处理方式,最后一个处理函数会生效。
- 如果一个异常类型没有对应的处理函数,Flask 会使用默认的错误处理方式。默认情况下,Flask 会返回一个简单的错误页面,其中包含了错误信息。
- 如果希望自定义错误页面,可以在错误处理函数中返回一个渲染过的模板。
- 如果需要阻止异常继续向上传递,可以在错误处理函数中返回一个响应对象。
- 如果多个错误处理函数都返回了响应对象,最后一个返回的响应对象会被 Flask 返回到客户端。