Python中为什么requests.HTTPError错误需要raise_for_status()来抛出?

  1. 首先看下面代码的运行情况:
	import requests
	
	res = requests.get("https://www.csdn.net/eee", headers=headers, timeout=1)
	res.encoding = "utf8"
	print(res.status_code)
	print(res.text)

运行结果

可见requests请求可以正常返回状态码以及html文本,并没有报错。状态码只是服务器响应的结果,而错误的状态码也是正常的响应结果。

加上try…except…再看看:
在这里插入图片描述
没有任何异常!响应状态码为404!

  1. 加上raise_for_status(),观察运行结果
    在这里插入图片描述
    此时被抛出404错误!
    由此可见一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应),我们必须要通过使用raise_for_status() 才能抛出异常!

  2. 加上try…except…

在这里插入图片描述
此时抛出的异常并被第一个 requests.HTTPError 异常捕获。

这样一看raise_for_status和try…except…之间的关系就很清晰了吧

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值