HTTPError是requests库的一个异常,它表示请求返回了一个非200状态码。这种情况需要我们对异常进行处理。在处理这种异常之前,首先需要了解HTTP状态码由哪些组成以及它们的含义。
HTTP状态码是由三位数字组成的,第一个数字代表响应类型,通常的类型有四种:
- 1xxx:表示信息类,如 100 Continue
- 2xxx:表示成功,如 200 OK
- 3xxx:表示重定向,如 301 Moved Permanently
- 4xxx和5xxx:表示客户端和服务器端的错误,如 404 Not Found、500 Internal Server Error
当我们向服务器发送请求时,如果服务器没有成功响应,就会返回一个非200状态码。具体来说,当服务器返回4xx或5xx状态码时,Requests库会自动抛出一个HTTPError异常。
处理HTTPError异常的方法,一般有两种:
1.使用try-except语句进行异常捕获,根据异常信息来判定状态码是否为200,从而进行相应的处理。
import requests
try:
resp = requests.get('https://www.example.com/')
resp.raise_for_status()
except requests.exceptions.RequestException as e:
print('请求失败:', e)
2.使用requests模块自带的raise_for_status()函数,此函数可以抛出HTTPError异常,如果响应状态码不是200,则抛出异常,并且在异常信息中显示状态码和原因。
import requests
resp = requests.get('https://www.example.com/')
resp.raise_for_status()
无论是哪种方式进行异常处理,都需要保证在错误发生时,正确地处理异常并且关闭打开的资源,否则会导致资源泄漏。
总之,处理HTTPError异常的关键是要清楚地了解HTTP状态码的含义,根据不同状态码进行不同的异常处理。这样可以使我们的代码更加健壮,提高程序的可靠性和稳定性。