[flask]异常抛出和捕获异常

Python学习之Flask全局异常处理流程_flask 异常处理-CSDN博客

读取文件错误 OSError: [Errno 22] Invalid argument:_[errno 22] invalid argument: '..\\data\\snli_1.0\\-CSDN博客


异常触发

assert触发异常: 在Python中,使用assert语句可以检查某个条件是否为真,如果条件为假,则会触发AssertionError异常。在Flask中,可以利用assert语句进行请求参数的校验。


raise触发异常: 在Python中,使用raise语句可以显式地触发特定的异常。在Flask应用程序中,我们可以根据需要触发不同类型的异常来处理业务逻辑。


abort触发异常: 在Flask中,可以使用abort函数手动触发HTTP错误。abort函数默认触发一个HTTPException异常。
 

主动抛出HTTP异常
from flask import Flask, request, abortapp = Flask(__name__)@app.route("/")
def index():password = request.args.get("password")if password != "123456":# 主动抛出异常!# abort的第一个参数:表示本次抛出的HTTP异常状态码,后续其他参数,表示错误相关的提示内容。abort(400)return "ok"if __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)

abort,只能抛出 HTTP 协议的错误状态码,一般用于权限等页面上错误的展示提示. abort 在有些前后端分离的项目里面不会被使用,往往在业务错误的时候使用raise进行抛出错误类型,而不是抛出http异常。

捕获异常

@app.errorhandler的参数是异常类型或者HTTP状态码

在Flask应用程序中,通过@app.errorhandler装饰器将异常类型与处理函数绑定。这样做的目的是在应用程序运行过程中捕获特定类型的异常,并进行适当的处理。可以为不同的HTTP状态码或其他异常类型注册相应的处理函数。

from flask import Flask, request, abortapp = Flask(__name__)class NetWorkError(Exception):pass@app.route("/")
def index():password = request.args.get("password")if password != "123456":raise NetWorkError("网络请求出错!")# print(hello)return "ok"# @app.errorhandler的参数是异常类型或者HTTP状态码@app.errorhandler(NameError)
def NameErrorFunc(exc):"""针对变量命名的异常处理:param exc::return:"""print(exc.__traceback__)return {"error": f"{exc}"}@app.errorhandler(400)
def error_400(exc, *args, **kwargs):print(exc.__traceback__)print(exc.code)        # 上面abort传递的错误状态码print(exc.description) # 上面abort传递的错误描述return {"error": f"{exc.description}"}@app.errorhandler(404)
def error_404(exc):print(exc.code)        # 上面abort传递的错误状态码print(exc.description) # 上面abort传递的错误描述return {"error": "当前页面不存在!"}@app.errorhandler(NetWorkError)
def network_error(exc):return {"error": f"{exc}"}if __name__ == '__main__':app.run(host="0.0.0.0", port=5000, debug=True)

刚进去主页面会显示这个,也就是raise函数发挥了作用

这里就是常见的404报错现场,没有找到对应的页面

总结
1、注册处理函数,将特定类型的异常与相应的处理函数绑定。
2、在应用程序执行过程中,如果发生异常,Flask会寻找匹配的异常处理函数。
3、匹配到异常处理函数后,控制权转移到异常处理函数,并执行相应的处理逻辑。
5、异常处理函数可以根据需要进行自定义的异常信息返回、日志记录或其他操作。
6、处理完异常后,Flask会返回相应的错误响应给客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/288532.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django 中间件

【一】Django框架之生命周期流程图 【二】介绍 【1】概述 Django 中的中间件(Middleware)是一个轻量级、底层的“插件”系统,用来全局地改变 Django 的输入或输出。每个中间件组件负责处理特定的全局任务,例如处理会话、处理跨站…

电脑访问网页获取路由器WAN口内网IP

因为运维过程中容易出现路由器配置了固定IP但是没人知道后台密码,不确定这个办公室的IP地址,且使用tracert路由追踪也只会出现路由器的LAN口网关并不会出现WAN口IP。 今日正好遇到了个好方法,经过测试可以正常使用。 方法如下: 内…

2.2 添加商户缓存

实战篇Redis 2.2 添加商户缓存 在我们查询商户信息时,我们是直接操作从数据库中去进行查询的,大致逻辑是这样,直接查询数据库那肯定慢咯,所以我们需要增加缓存 GetMapping("/{id}") public Result queryShopById(Pat…

ASP.Net添加Swagger注释

文章目录 Swagger添加Swagger注释 Swagger 添加Swagger注释 1、右击项目->选择属性->点击生成->输出,选中文档文件 2、配置服务 在program.cs 文件里配置SwaggerUI //增加项一 builder.Services.AddSwaggerGen(c> {c.SwaggerDoc("v1", ne…

免费SSL证书和付费SSL证书的区别点

背景: 在了解免费SSL证书和付费SSL证书的区别之前,先带大家了解一下SSL证书的概念和作用。 SSL证书的概念: SSL证书就是基于http超文本传输协议的延伸,在http访问的基础上增加了一个文本传输加密的协议,由于http是明…

外星人m18R2国行中文版原厂预装23H2原装Win11系统恢复带F12恢复重置

戴尔外星人m18R2国行中文版原厂预装23H2系统恢复安装 远程恢复安装:https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f 1.自带原厂预装系统各驱动,主题,Logo,Office带所有Alienware主题壁纸、Alienware软件驱动 2.带…

Redis高级面试题-2024

说说你对Redis的理解 Redis是一个基于Key-Value存储结构的开源内存数据库,也是一种NoSQL数据库。 它支持多种数据类型,包括String、Map、Set、ZSet和List,以满足不同应用场景的需求。 Redis以内存存储和优化的数据结构为基础,提…

前端框架的简单介绍

html html-结构 盖房子之前先划三室二厅 (超文本标记语言)(可以实现一切的文本) css css-样式 在房里添家具 (层叠样式单)(化妆在脸上叠加) javascript(js) javascript(js)-交互(行为) 我点击你打开 供显示信息的元…

BRICK POP展示了有趣的链上游戏玩法与奖励机制

新游戏BRICK POP将Sui区块链技术与低Gas费用,以及其在Web3游戏开发方面的专业知识无缝结合。通过充分利用Sui和ONBUFF的INNO平台优势,BRICK POP为玩家提供了一个融合了前沿技术和引人入胜游戏的沉浸式游戏体验。BRICK POP游戏设计为实时交易和高用户参与…

接口测试之深入理解HTTPS

前言 随着网络安全问题越来越被重视,HTTPS协议的使用已经逐渐主流化。目前的主流站点均已使用了HTTPS协议;比如:百度、淘宝、京东等一二线主站都已经迁移到HTTPS服务之上。而作为测试人员来讲,也要需时俱进对HTTPS协议要有一定的…

WPF 命名空间解释

在C#中有命名空间的概念,我们可以使用using引入,就可以使用其中的类,在xaml中,也同样有命名空间,在window标签中用xmlns声明的这几行,这就是本页面引入的命名空间。 一般的情况下,我们引入命名空…

【C++入门】 初见,单推,与C++的第一次约会

关注小庄 顿顿解馋(ᕑᗢᓫ∗)˒ 引言:本篇博客我们开始与C的第一次约会,C是兼容c的,本篇博客我们将了解到C关键字有哪些,C命名空间,C输入与输出和缺省参数的内容,请放心食用 ~ 文章目录 一 🏠 C…

跨站脚本攻击

跨站脚本攻击又称XSS攻击,是代码注入攻击的一种。利用XSS漏洞,攻击者可以窃取Cookies或劫持会话,或注入恶意 HTML 或 JavaScript 代码到页面中,又或者将当前页面重定向至一个攻击者搭建的恶意网站。XSS漏洞的产生多是因为网站开发…

南网科研院携手百度智能云,入选信通院AI原生应用优秀案例

为呈现AI原生研发和应用成效,提供AI原生相关技术、服务、部署、运营、基础设施等选型参考,近期,中国信息通信研究院发布了AI原生技术及应用优秀案例,由南方电网公司输配电部牵头、南方电网科学研究院有限责任公司(以下…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展,智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一,科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程,并阐述如何利用科技“育”见未来 一、智慧校…

hadoop 查询hdfs资源信息的方式

hdfs dfsadmin -report [-live][-dead][-decommissioning]

Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)

此模块将网络通信模块和业务处理模块进行了合并 网络通信通过httplib库搭建完成业务处理: 文件上传请求:备份客户端上传的文件,响应上传成功客户端列表请求:客户端请求备份文件的请求页面,服务器响应文件下载请求&…

os.walk()寻找指定文件

#T2 dcm文件从原位置批量复制到新文件夹F:/467289/ import os import numpy as np path /Users/yxk/Desktop/Debug_test/file# for root, dirs, files in os.walk(path): # for file in files: # if file.endswith(.dcm): # print(file)# def findPa…

android 消息提醒

1.创建 MyBackgroundService.java 继承 Service public class MyBackgroundService extends Service {Overridepublic void onCreate() {super.onCreate();Log.i("业务服务", "开起业务服务");//调用服务后在页面手机上创建一个通知消息。if (android.os…

SQLite数据库浏览器sqlite-web

什么是 sqlite-web ? sqlite-web是一个用 Python 编写的基于 Web 的 SQLite 数据库浏览器。 软件特点: 可与您现有的 SQLite 数据库配合使用,也可用于创建新数据库。添加或删除: 表格列(支持旧版本的 SQLite&#xff…