错误处理与重试
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)