欢迎访问宙启技术站
智能推送

解决Python中requests.exceptions.HTTPError异常的方法

发布时间:2023-12-26 17:27:10

在Python中,HTTPError是requests库中的一个异常类,可以在使用requests库发送HTTP请求时遇到。HTTPError是一个继承自requests.exceptions.RequestException的子类,表示HTTP请求返回状态码不在200-299的范围内。

要解决HTTPError异常,可以使用try-except语句来捕捉异常并处理。以下是解决HTTPError异常的几种方法,以及使用例子:

方法1:使用try-except语句捕捉和处理HTTPError异常

import requests
from requests.exceptions import HTTPError

try:
    response = requests.get("http://example.com")
    response.raise_for_status()  # 如果状态码不在200-299之间,会抛出HTTPError异常
    print("请求成功")
except HTTPError as err:
    print(f"HTTPError异常:{err}")

该方法将请求的URL替换为一个存在的URL,并使用raise_for_status()方法来主动抛出HTTPError异常。

方法2:使用Response对象的status_code属性判断状态码,并手动抛出HTTPError异常

import requests
from requests.exceptions import HTTPError

response = requests.get("http://example.com")
if response.status_code >= 200 and response.status_code <= 299:
    print("请求成功")
else:
    raise HTTPError(f"HTTPError异常:状态码{response.status_code}")

该方法在请求之后,通过判断状态码是否在200-299之间来确定请求是否成功。如果状态码不在此范围内,手动抛出HTTPError异常。

方法3:使用装饰器requests.exceptions.catch_exception()捕捉和处理HTTPError异常

import requests
from requests.exceptions import HTTPError, catch_exception

@catch_exception(HTTPError)
def http_request(url):
    return requests.get(url)

try:
    response = http_request("http://example.com")
    print("请求成功")
except HTTPError as err:
    print(f"HTTPError异常:{err}")

该方法使用装饰器catch_exception()来捕捉指定的异常类型。在函数内部,使用requests.get()发送请求,并将请求结果返回。

总结:解决HTTPError异常的方法包括使用try-except语句捕捉异常、使用Response对象的status_code属性判断状态码、使用装饰器catch_exception()捕捉异常。具体使用哪种方法取决于具体的需求和代码结构。以上是一些常用的方法和示例,可以根据实际情况选择适合的方法来处理HTTPError异常。