@app.register_error_handler
是 Flask 中的一个装饰器,用于注册一个错误处理函数。与 @app.errorhandler
不同的是,它可以同时处理多种异常类型。
在这个示例中,我们定义了两个错误处理函数:handle_value_error
和 handle_type_error
,分别用于处理 ValueError 和 TypeError 异常。
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)
def handle_value_error(error):
return jsonify({'message': str(error)}), 404
def handle_type_error(error):
return jsonify({'message': str(error)}), 400
app.register_error_handler(ValueError, handle_value_error)
app.register_error_handler(TypeError, handle_type_error)
if __name__ == '__main__':
app.run()
与 @app.errorhandler 不同的是,我们使用 app.register_error_handler
方法分别注册了这两个处理函数。
这样,当应用程序抛出 ValueError 或 TypeError 异常时,相应的处理函数就会被调用。这样可以更加灵活地处理不同类型的异常。
需要注意的是,与 @app.errorhandler
不同的是,@app.register_error_handler
可以注册多个处理函数来处理不同类型的异常。