异常处理
2023年8月3日小于 1 分钟
在项目开发过程中,往往后台出现异常时,并不想把异常信息直接显示给用户或者要统一处理异常时,可以使用
abort
主动抛出异常,再捕获异常返回美化后的页面。
抛出异常
@app.route('/goods/<int:pk>/')
def goods(pk):
# 根据获取的 pk,对应的商品数据,然后渲染商品详情页面
# 假设 pk 为 3的 商品不存在,应该抛出 404异常
if pk == 3:
abort(404)
else:
return render_template('goods_detail.html', goods={'name': "华为P40 Pro", "price": 2999})
如果多个视图中,都需要 处理类似的问题,建议抛出 404异常,后期统一处理
异常处理
@app.errorhandler(404)
def error(e):
return render_template('exception/404.html')
扩展知识
想要在某个蓝图中,注册一个 异常处理函数,可以处理所有蓝图的异常情况,应该使用
blueprint.app_errorhandler(error_code)
from flask import Blueprint, render_template
exception = Blueprint('exception', __name__)
@exception.app_errorhandler(404)
def error_404_handler(e):
return render_template('404.html')