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

Python中requests.exceptions模块用于处理网络请求异常

发布时间:2023-12-25 03:47:49

在Python中,requests.exceptions模块提供了一系列异常类,用于处理与网络请求相关的异常。这些异常类可以帮助开发者识别和捕获网络请求过程中可能发生的问题,例如连接超时、请求超时、SSL错误等。

下面是一些常见的requests.exceptions异常类及其使用方法:

1. ConnectionError:当发生与连接相关的错误时抛出。例如,DNS查询失败、连接被拒绝等。

import requests

try:
    response = requests.get('http://www.example.com')
    response.raise_for_status()
except requests.exceptions.ConnectionError as e:
    print(f"连接错误:{e}")

2. HTTPError:当发生HTTP错误(状态码为4xx或5xx)时抛出。可以使用response.status_code属性获取错误的状态码。

import requests

try:
    response = requests.get('http://www.example.com/404')
    response.raise_for_status()
except requests.exceptions.HTTPError as e:
    print(f"HTTP错误:{e},状态码:{response.status_code}")

3. Timeout:当请求超时时抛出。可以使用timeout参数设置请求超时时间。

import requests

try:
    response = requests.get('http://www.example.com', timeout=1)
    response.raise_for_status()
except requests.exceptions.Timeout:
    print("请求超时")

4. TooManyRedirects:当重定向次数超过设定值时抛出。

import requests

try:
    response = requests.get('http://www.example.com', allow_redirects=False)
    response.raise_for_status()
except requests.exceptions.TooManyRedirects:
    print("重定向次数过多")

5. SSLError:当发生SSL错误时抛出。可以使用verify参数来控制SSL验证。

import requests

try:
    response = requests.get('https://www.example.com', verify=False)
    response.raise_for_status()
except requests.exceptions.SSLError:
    print("SSL错误")

6. RequestException:所有requests.exceptions模块的基类异常,用于捕获所有其他网络请求错误。

import requests

try:
    response = requests.get('http://www.example.com')
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"请求错误:{e}")

以上是一些常见的requests.exceptions异常类及其使用方法。通过捕获这些异常,可以更好地处理网络请求过程中可能出现的问题,提高代码的健壮性和可靠性。