Python requests网络库源码分析(第三篇:通过学习异常模块,了解http协议)

news2024/11/15 21:49:42

前言

    作者在requests包下,定义了exceptions模块,该模块中定义执行http请求过程中常见的错误,熟悉这些错误有助于我们写出健壮的业务程序,同时还能温习http的知识点,本文基于的requests版本为2.27.1

exceptions模块,位于requests包中

 exceptions模块中又定义了很多类,每个类创建的对象,代表一个http错误,可见作者对于http协议有多熟悉

逐个介绍一下这些类

1、class RequestException(IOError):

默认继承IOError,该类创建的对象,表示请求错误

2、class InvalidJSONError(RequestException):

继承RequestException,创建的对象表示具体的错误,表示无效的JSON错误,可以清晰看到,作者是在准备请求JSON的时候,出现错误后,抛出

3、class JSONDecodeError(InvalidJSONError, CompatJSONDecodeError):
解码JSON错误

4、 class HTTPError(RequestException):

表示http错误

5、class ConnectionError(RequestException):

表示tcp连接错误

6、class ProxyError(ConnectionError):

具体连接错误之一,继承了ConnectionError,表示代理错误

7、class SSLError(ConnectionError):

具体连接错误之一,同样继承ConnectionError,表示https的sll错误

8、class Timeout(RequestException):

请求错误中的一种,继承RequestException,创建的对象表示请求超时错误

9、class ConnectTimeout(ConnectionError, Timeout):

连接错误和超时错误的一种,所以同时继承连接错误、超时错误,创建的对象表示连接超时错误,牛逼啊作者

10、class ReadTimeout(Timeout):

超时错误中的一种,表示读取超时错误

11、class URLRequired(RequestException):

url解析错误,属于请求错误中的一种

12、class TooManyRedirects(RequestException):

太多重定向错误,也属于请求错误中的一种

13、class MissingSchema(RequestException, ValueError):

缺少协议错误,属于请求错误和值错误,同时继承RequestException、ValueError

14、class InvalidSchema(RequestException, ValueError):

无效协议错误,属于请求错误和值值错误,也是同时继承RequestException、ValueError

15、class InvalidURL(RequestException, ValueError):

无效url错误

16、class InvalidHeader(RequestException, ValueError):

无效header错误

17、class InvalidProxyURL(InvalidURL):

无效代理url错误,url错误中的其中一种,所以继承InvalidURL

18、class ChunkedEncodingError(RequestException):

块编码错误,属于请求错误中的一种,继承RequestException,妥妥的

19、class ContentDecodingError(RequestException, BaseHTTPError):

body解码错误,属于请求错误和基本的http错误

20、class StreamConsumedError(RequestException, TypeError):

流错误,具体

21、class RetryError(RequestException):

请求重试错误

22、class UnrewindableBodyError(RequestException):

一种请求错误

23、class RequestsWarning(Warning):

请求警告错误

24、class FileModeWarning(RequestsWarning, DeprecationWarning):

文件模式警告

25、class RequestsDependencyWarning(RequestsWarning):

请求依赖警告错误

总结

1、作者对于http协议中的错误,非常熟悉

2、使用面向对象,分类错误,在不同的代码中抛出不同的Exception对象,帮助排查问题,作者牛逼,面向对象也熟悉的很

3、这么多错误,我们不知道程序中,什么时候会偶现这些错误中某一个,一旦没有处理捕获处理,你的程序就会结束崩溃了

4、如果我们想让程序稳定,可以try except exception,哈哈,再输出堆栈即可,这样即保证程序稳定,又能知道错误是啥

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt学习:tcp区分保存多个客户端

在前面文掌的tcp客服端服务端进行更改 qt学习:Network网络类tcp客户端tcp服务端-CSDN博客https://blog.csdn.net/weixin_59669309/article/details/135842933?spm1001.2014.3001.5501前面的服务端每次有新的客户端连接,就会覆盖掉原来的指针&#xff0…

Termux结合内网穿透实现无公网ip远程SFTP传输文件

目录 前言 1. 安装openSSH 2. 安装cpolar 3. 远程SFTP连接配置 4. 远程SFTP访问 4. 配置固定远程连接地址 结语 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Termux结合内网穿透实现无公网ip远程SFTP传输文件,希望大家能…

CentOS7自动备份数据库到git

虽然数据库没什么数据,但是有就是珍贵的啦,为了服务器什么的无了,所以还是要自动备份一下比较好。 Open备忘第一页 步骤 在Gitee(github)上创建一个私有仓库Gitee(github)配置好服务器的ssh在服…

DAY10_SpringBoot—SpringMVC重定向和转发RestFul风格JSON格式SSM框架整合

目录 1 SpringMVC1.1 重定向和转发1.1.1 转发1.1.2 重定向1.1.3 转发练习1.1.4 重定向练习1.1.5 重定向/转发特点1.1.6 重定向/转发意义 1.2 RestFul风格1.2.1 RestFul入门案例1.2.2 简化业务调用 1.3 JSON1.3.1 JSON介绍1.3.2 JSON格式1.3.2.1 Object格式1.3.2.2 Array格式1.3…

mysql 多版本并发控制mvcc

行级锁的一个变种避免了加锁,开销低非阻塞读操作,写操作是行级原理:使用数据在某个时间点的快照实现,不同事务在同一个时间可以看到同一个表中的不同数据。分类:乐观,悲观在一行中存储更多数据,…

芯片查询工具:道合顺电子网助您轻松实现芯片查询、分析与调试

在电子领域,对芯片进行准确的查询、分析和调试是确保设备正常运行和故障排查的关键步骤。为了帮助用户轻松实现这一过程,道合顺电子网提供了一系列高效的芯片查询工具,助您快速获取所需信息、分析数据以及进行灵活的调试操作。 为什么选择道…

SpringMVC-HttpMessageConverter 报文信息转化器

文章目录 HttpMessageConverter一、概念二、RequestBody三、RequestEntity四、 ResponseBody1.返回JSON格式的字符串 五、RestController六、ResponseEntity HttpMessageConverter 一、概念 报文信息转化器,将请求报文转化为Java对象,或将Java对象转化…

使用云手机运营TikTok,实现更多可能性

在数字化时代,社交媒体平台的崛起改变了商业推广和品牌建设的方式。TikTok,作为一款风靡全球的短视频应用,吸引了数以亿计的用户。对于跨境电商和品牌推广而言,使用云手机运营TikTok可以实现多种功能,让运营变得更加灵…

idea中使用带provide修饰的依赖,导致ClassNotFound

1、provide修饰的依赖作用: 编译时起作用,而运行及打包时不起作用。程序打包到Linux上运行时,若Linux上也有这些依赖,为了在Linux上运行时避免依赖冲突,可以使用provide修饰,使依赖不打包进入jar中 2、可能…

再获权威认可!亚信安全实力占据CCSIP 2023全景图75个领域

近日,FreeBuf咨询正式发布《CCSIP(China Cyber Security Industry Panorama)2023中国网络安全行业全景册(第六版)》。本次全景册面向广大国内安全厂商,由厂商自主申报并填写信息征集表,经FreeBu…

js中的内置对象、数学对象、日期对象、数组对象、字符串对象

js中的对象(三种): 自定义对象 car、computer DOM对象 div、p BOM对象 window、console 内置对象 数学对象 Math (object类型) 1、圆周率 Math.PI 2、向下取整(返回值) Math.floor() 3、向上取整(返回值) M…

【Node-RED】node-red-contrib-opcua-server模块使用(1)

node-red-contrib-opcua-server模块使用 前言node-red-contrib-opcua-server模块使用1.1.1版本报错场景1.1.0版本报错场景0.4.1版本正常场景之前版本的卸载下载0.4.1版本openssl 1.1.0下载pem文件的调试生成导入server-with-context.json示例 前言 在Node-RED中,如…

小红书如何做混部?

作者:宋泽辉(小红书)、张佐玮(阿里云) 编者按: Koordinator 是一个开源项目,是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生,是行业首个生产可用、面向大规模场景的开源混…

uni-app(微信小程序、钉钉小程序)打开第三方地图:uni.openLocation的使用

1.相关参数 (文档) 2. 代码实现 openMap() {uni.openLocation({latitude: 29.074979,longitude: 119.52142,name: 地点,address: 浙江省金华市婺城区白龙桥镇郭力垄水库(白龙桥镇),success: function(res) {console.log(打开系统位置地图成功)},fail: fu…

Springboot,使用sharedingjdbc 分库分表,最佳实践。

一、简介 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和…

WIFI电路原理时序检修思路

uart是串口,bt是蓝牙,hsic是高速接口。pcm是音频接口。时序图的第五步是发出就绪信号,然后第六步与门发出就绪信号。 wifi芯片是u8_rf。 特别说明:short表示短接。xw表示实际是看不到物体的,是直接相连的。 找信号50_…

MySQL 定位长事务(Identify Long Transactions)

在MySQL的运行中,经常会遇到一些长事务。长事务意味着长时间持有系统资源,这在OLAP系统中很常见,但在OLTP系统中,长事务意味着争用、并发降低,等待。长事务伴随的典型现象就是经常听到开发人员说"xxx表被锁住了……

2024年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题是由安全生产模拟考试一点通提供,危险化学品生产单位安全生产管理人员证模拟考试题库是根据危…

深入了解Figure的结构与层次

深入了解Figure的结构与层次 一 Matplotlib中的Figure1.1 Figure的概念和作用:1.2.创建Figure对象:1.3 Figure的属性和方法: 二 子图(Axes)的角色与创建2.1 子图(Axes)的概念:2.2 创建子图的方法:2.3 Axes的…

文件名翻译工具,文件名称翻译软件

无论是工作、学习还是生活,我们时常会遇到文件名称难以理解的情况。这时,一款优秀的文件名称翻译软件就显得尤为重要。今天,我要为大家介绍一个备受好评软件——文件批量改名高手,这款软件自带翻译功能,可以帮你轻松实…