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

Python中的requests.exceptions模块用于处理HTTP请求异常

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

requests.exceptions模块是requests库中的一个内置模块,用于处理HTTP请求过程中的异常情况。它提供了一系列的异常类,用于处理不同类型的异常。下面将介绍几个常用的异常类,并给出相应的使用例子。

1. requests.exceptions.RequestException

这是所有requests库中异常的基类。当发生任何请求异常时,都会抛出该异常。通常我们可以使用该异常捕获所有的请求异常。

import requests
from requests.exceptions import RequestException

try:
    response = requests.get('https://www.example.com')
    # 如果返回状态码不为200,抛出RequestException异常
    response.raise_for_status()
except RequestException as e:
    print('请求异常:{}'.format(e))

2. requests.exceptions.HTTPError

继承自RequestException类,用于处理请求返回的HTTP错误状态码异常。

import requests
from requests.exceptions import HTTPError

try:
    response = requests.get('https://www.example.com/404')
    response.raise_for_status()
except HTTPError as e:
    print('HTTP异常:{}'.format(e))

3. requests.exceptions.Timeout

继承自RequestException类,用于处理请求超时异常。

import requests
from requests.exceptions import Timeout

try:
    response = requests.get('https://www.example.com', timeout=0.001)
    response.raise_for_status()
except Timeout as e:
    print('请求超时:{}'.format(e))

4. requests.exceptions.ConnectionError

继承自RequestException类,用于处理连接错误异常,比如DNS解析失败、拒绝连接等。

import requests
from requests.exceptions import ConnectionError

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

5. requests.exceptions.TooManyRedirects

继承自RequestException类,用于处理请求重定向次数过多异常。

import requests
from requests.exceptions import TooManyRedirects

try:
    response = requests.get('http://www.example.com', allow_redirects=True, max_redirects=0)
    response.raise_for_status()
except TooManyRedirects as e:
    print('重定向次数过多:{}'.format(e))

这些只是requests.exceptions模块中的几个常用异常类,实际上还有其他的异常类,用于处理不同类型的异常情况。在实际的开发中,我们可以根据具体的情况选择合适的异常类进行处理。