跳至主要內容

异常处理

Mr.Liu小于 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')