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

前言

    作者在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.mzph.cn/news/643801.shtml

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

相关文章

关于网络安全 的 ARP欺骗 实验操作

实验设备: Windows server 2008 kali 1. vmware--上面菜单栏--虚拟机--设置--网络--NAT 模式 确定靶机与攻击机的连通性(互相能 ping 通) 靶机查看 arp 表(arp -a) 查看攻击机(kali)物理地址(ip addr&…

SpringBoot整合ElasticSearch实现基础的CRUD操作

本文来说下SpringBoot整合ES实现CRUD操作 文章目录 概述spring-boot-starter-data-elasticsearch项目搭建ES简单的crud操作保存数据修改数据查看数据删除数据 本文小结 概述 SpringBoot支持两种技术和es交互。一种的jest,还有一种就是SpringData-ElasticSearch。根据…

Modern C++ 一个例子学习条件变量

目录 问题程序 施魔法让BUG浮出水面 条件变量注意事项 修改程序 问题程序 今天无意中看到一篇帖子,关于条件变量的,不过仔细看看发现它并达不到原本的目的。 程序如下,读者可以先想想他的本意,以及有没有问题: #…

Zabbix分布式监控系统

实验过程 ps: 阿里云盘Xnode1获取 xnode1 https://www.alipan.com/s/HgLXfoeBWG2 提取码: eb70 1、xnode1克隆两台虚拟机并修改ip zabbix-server192.168.224.3 zabbix-agent192.168.224.4 2、修改主机名 [rootlocalhost ~]# hostnamectl set-hostname zabbix-se…

Vue开始封装全局防抖和节流函数

封装文件 封装文件的实现思路如下: 首先,我们需要定义两个函数:防抖函数和节流函数。这两个函数的目的是为了减少频繁触发某个事件导致的性能问题;防抖函数的实现思路是创建一个计时器变量,用于延迟执行函数。当触发…

Spring Boot 初始(快速搭建 Spring Boot 应用环境)

提示: ① 通过下面的简介可以快速的搭建一个可以运行的 Spring Boot 应用(估计也就2分钟吧),可以简单的了解运行的过程。 ② 建议还是有一点 Spring 和 SpringMVC的基础(其实搭建一个 Spring Boot 环境不需要也没有关系…

uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题(高德地图)

踩坑uniapp中打包Andiord app,在真机调试时地图以及定位功能可以正常使用,打包成app后失效问题_uniapp真机调试高德地图正常 打包apk高德地图就不加载-CSDN博客 问题: 目前两个项目,一个项目是从另一个项目里面分割出来的一整套…

AI 赋能绿色制冷,香港岭南大学开发 DEMMFL 模型进行建筑冷负荷预测

近年来,城市化进程加速所带来的碳排放量骤增,已经严重威胁到了全球环境。多个国家均已给出了「碳达峰,碳中和」的明确时间点,一场覆盖全球、全行业的「绿色革命」已经拉开序幕。在一众行业中,建筑是当之无愧的能耗大户…

初识node.js(使用)

文章目录 项目目录介绍和运行流程1.index.html&#x1f447;2.整个项目的核心入口文件其实是main.js3.App.vue 组件化开发 和 根组件普通组件的注册1.局部注册2.全局注册 综合案例 项目目录介绍和运行流程 1.index.html&#x1f447; <!DOCTYPE html> <html lang&quo…

宠物互联网医院系统

在数字时代&#xff0c;宠物医疗迎来了一场革新&#xff0c;动物互联网医院系统以其先进的技术和智能的特性成为宠物护理的领军者。本文将介绍宠物互联网医院系统的一些关键技术和代码示例&#xff0c;揭示这一科技奇迹的实现原理。 1. 远程医疗服务的实现 远程医疗服务是宠…

国标GB28181协议EasyCVR启动失败报错“Local Machine Check Error”的解决方法

国标GB28181安防监控系统EasyCVR平台采用了开放式的网络结构&#xff0c;可支持4G、5G、WiFi、有线等方式进行视频的接入与传输、处理和分发。安防视频监控平台EasyCVR还能支持GIS电子地图模式&#xff0c;基于监控摄像头的经纬度地理位置信息&#xff0c;将场景中的整体安防布…

当pytest遇上poium会擦出什么火花

当pytest遇上poium会擦出什么火花 首先&#xff0c;创建一个test_sample/test_demo.py 文件&#xff0c;写入下面三行代码。 def test_bing(page):page.get("https://www.bing.com")assert page.get_title "必应"不要问题 page 从哪里来&#xff0c;打开…

浅谈DNS的工作原理及其作用

DNS&#xff0c;全称为Domain Name System&#xff0c;即域名系统&#xff0c;是一种用于将域名和IP地址相互映射的分布式数据库系统。它将可读的域名转换为对应的IP地址&#xff0c;使得用户可以更方便地通过域名来访问网络上的资源。今天锐成就简单探讨一下DNS的工作原理及其…

数据采集与预处理02 :网络爬虫实战

数据采集与预处理02 &#xff1a;网络爬虫实战 爬虫基本知识 1 HTTP的理解 URL uniform resource locator. 是统一资源定位符&#xff0c;URI identifier是统一资源标识符。几乎所有的URI都是URL。 URL前部一般可以看到是HTTP还是HTTPS&#xff0c; 这是访问资源需要的协议…

Kafka-服务端-KafkaController

Broker能够处理来自KafkaController的LeaderAndIsrRequest、StopReplicaRequest、UpdateMetadataRequest等请求。 在Kafka集群的多个Broker中&#xff0c;有一个Broker会被选举为Controller Leader,负责管理整个集群中所有的分区和副本的状态。 例如&#xff1a;当某分区的Le…

使用Electron打包vue文件变成exe应用程序

文章目录 一、下载Electron二、修改下载的Electron项目1.修改index.html文件2.修改main.js文件3.修改package.json文件 三、修改vue项目1.修改vite.config.js文件2.修改.env.production文件3.修改auth.js文件4.修改router下得index.js文件6.修改Navbar.vue文件 四、Electron打包…

数据结构:3_栈和队列

栈和队列 一.栈 1. 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。**栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#x…

粒子类特效SDK,电影级的逼真特效

美摄科技&#xff0c;作为技术创新的先驱&#xff0c;开发了一款独特的粒子类特效SDK&#xff0c;为专业内容创作者提供了一种全新的工具&#xff0c;以实现电影级的逼真特效。 一、技术背景与挑战 随着移动设备的普及和性能的提升&#xff0c;越来越多的视觉内容在移动端呈现…

MSP430仿真器使用常见问题

一、 主要是驱动安装问题 有用户反应驱动安装不上&#xff0c;按照用户手册操作一直不能安装成功。 可以尝试如下步骤进行安装。 1. 双击设备管理器中无法安装或者提示有错误的430仿真器设备 选择驱动程序——更新驱动程序 选择手动安装 选择从电脑设备驱动列表中安装 弹出下…

春节要来了,可是电视家却走了,没有春晚看了

春节马上就要到来&#xff0c;可是随着时代越来越进步&#xff0c;年味也越来越淡了&#xff0c;尤其在海外&#xff0c;更没有国内的气氛浓郁&#xff0c;所以只有每年看春晚才会让我感觉到今天又是新的一年了。 而且长大后会发现更有年味的不是新年&#xff0c;而是新年前…