Flask之异常处理

异常处理

HTTP 异常主动抛出

  • abort 方法
    • 抛出一个给定状态代码的 HTTPException 或者 指定响应,例如想要用一个页面未找到异常来终止请求,你可以调用 abort(404)。
  • 参数:
    • code – HTTP的错误状态码
# abort(404)
abort(500)

抛出状态码的话,只能抛出 HTTP 协议的错误状态码

示例代码:

from flask import Flask, render_template, abort

app = Flask(__name__)


@app.route('/users/<int:user_id>')
def index(user_id):
    if user_id < 5:
        abort(444)
    return render_template('index.html')


app.run()

运行效果:

【这儿abort写成404时,页面会报404的错误,但是服务器不会显示错误信息】 【这儿要写确定的状态码】

捕获错误

  • errorhandler 装饰器
    • 注册一个错误处理程序,当程序抛出指定错误状态码的时候,就会调用该装饰器所装饰的方法
  • 参数:
    • code_or_exception – HTTP的错误状态码或指定异常
  • 例如统一处理状态码为500的错误给用户友好的提示:
@app.errorhandler(500)
def internal_server_error(e):
    return '服务器搬家了'

 示例代码:

from flask import Flask, render_template, abort

app = Flask(__name__)


@app.route('/users/<int:user_id>')
def index(user_id):
    if user_id < 5:
        abort(500)
    return render_template('index.html')


@app.errorhandler(500)
def internal_server_error(e):
    print(e)
    return '服务器搬家了'


app.run()

运行效果:

  • 捕获指定异常
@app.errorhandler(ZeroDivisionError)
def zero_division_error(e):
    return '除数不能为0'

示例代码:

from flask import Flask, render_template, abort

app = Flask(__name__)


@app.route('/test')
def index():
    9 / 0
    return render_template('index.html')


@app.errorhandler(ZeroDivisionError)
def zero_division_error(e):
    print(e)
    return '除数不能为0'


app.run()

运行效果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值