Flask异常捕获:abort与errorhandler的使用及调试模式

Dylan
Dylan
发布时间:2026-10-16| 19人浏览过
原创

本文详解Flask框架中的异常捕获机制,重点介绍abort方法抛出指定HTTP状态码及errorhandler装饰器注册自定义错误处理函数的用法。同时阐述开启调试模式(debug=True)在开发阶段显示详细错误信息的重要性,以提升用户体验并简化常见错误的反馈处理。

Flask框架使用异常捕获

abort 方法

该方法用于抛出一个带有指定状态代码的 HTTPException。例如,若需终止请求并返回页面未找到错误,可调用 abort(404)。

参数说明:code 代表需要抛出的 HTTP 错误状态码。

abort(404)

注意,abort 方法仅能用于抛出符合 HTTP 协议定义的状态码。

errorhandler 装饰器

此装饰器用于注册一个错误处理程序。当程序内部抛出指定的错误状态码时,会自动调用被该装饰器修饰的处理函数。

参数说明:code_or_exception 可以是 HTTP 错误状态码,也可以是特定的异常类。

示例展示了如何统一处理状态码为 500 的错误,并向用户返回友好的提示信息:

@app.errorhandler(404)
def internal_server_error(e):
    return '网页找不到了', 404

开启调试模式

在开发阶段启动调试模式,可使浏览器和编辑器控制台显示详细的错误信息,便于排查问题。

if __name__ == '__main__':
    app.run(debug=True)

Flask基础-->错误捕获(异常捕获)

错误捕获(异常捕获)

from flask import Flask
from  flask import abort

app = Flask(__name__)

@app.route('/demo1')
def demo1():
    # print(403)
    # abort(404)  # 主动抛出404错误,下面的代码不在执行
    print("404")
    return 'demo1'
#=====================================
# 当我们访问http://127.0.0.1:5000/demo3时,由于找不到页面而抛出404错误,那么demo2就会捕获这个错误
#=====================================
@app.errorhandler(404)  # 捕获404错误
def demo2(error): # error接收errorhandler(404)返回的错误内容
    return "哎呀,页面不见了......"


if __name__ == '__main__':
    app.run(debug = True)

什么是异常捕获?

异常捕获旨在处理非正常的页面资源请求情况。

为什么要做异常捕获处理?

项目上线后通常会关闭调试模式。此时若用户请求的资源不存在,服务器不会返回详细的错误堆栈,

用户将无法获得有效的错误反馈,也不清楚出错原因,从而导致极差的用户体验。通过捕获这些常见错误并进行简化处理,向用户展示友好提示,能有效提升项目的美观度和用户体验。

总结

以上为个人经验分享,希望能给大家一个参考,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。