错误处理与重试

71.7 错误处理与重试

先判断 r.status_code == 200,再解析 r.json()。

requests 超时抛 Timeout,网络错误抛 ConnectionError,用 try/except 捕获。

r.raise_for_status() 非 2xx 时抛 HTTPError。

安全的 API 调用

# ========================================
# 示例:错误处理
# ========================================
import requests

def fetch_api(url):
    try:
        r = requests.get(url, timeout=5)
        r.raise_for_status()
        return r.json()
    except requests.Timeout:
        print('请求超时')
    except requests.HTTPError as e:
        print('HTTP 错误', e.response.status_code)
    except requests.RequestException as e:
        print('网络错误', e)
    return None

result = fetch_api('https://httpbin.org/get')
print(result is not None)