You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何跳过参数或延后定义?如何处理API响应的KeyError问题?

问题解决方案

你的报错核心原因是直接通过json_response["items"]强制取值,当API返回错误结构时不存在该key,会直接抛出异常中断逻辑,无法进入else分支。

你可以使用字典的get()方法安全取值,保留原有if-elif-else逻辑的前提下调整代码如下:

import requests

ps = {"page_size": 1}
resp = requests.get("api.url.com", params=ps)
   
json_response = resp.json()
# 安全获取items长度,不存在items时返回空列表长度为0,自动进入else分支
items_length = len(json_response.get("items", []))
if items_length == 5:
   print(json_response)
elif items_length == 10 or items_length == 15:
   print("Page size is not 5")
else:
   # 同样可以用get避免error/message不存在的极端情况
   print(json_response.get("error", {}).get("message", "未知错误"))

逻辑说明

  • 字典的get(key, default)方法会在目标key不存在时返回指定的默认值,不会抛出KeyError
  • 当API返回错误结构时,items不存在,items_length取值为0,不匹配前两个分支的判断条件,会正常进入else分支
  • else分支额外加了两层get处理,即使接口返回的异常结构不符合预期,也不会抛出异常,兜底返回「未知错误」

内容的提问来源于stack exchange,提问作者Константин Морев

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:27:02