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

Python中如何处理API返回的JSON响应状态码及KeyError问题?

解决方案与最佳实践

首先明确两个核心问题的结论:

  • pass的使用完全正确:它在这里的语义就是“跳过当前行,不执行任何后续操作”,完全符合Python的语法规范和代码风格。
  • 你原本的try-except写法有优化空间,主要问题是裸except会捕获所有异常,可能隐藏非预期的错误(比如api_response本身为None、字段类型错误等),且逻辑可以更清晰。

下面是几种更符合Python风格的写法,按推荐程度排序:

1. 使用字典get()方法(最推荐)

利用字典的get()方法安全获取status字段,当字段不存在时返回默认值(这里设为空字符串),无需异常捕获,逻辑直观易懂:

for row in df:
    # 调用API获取api_response
    status = api_response.get('status', '')
    if status.startswith('4'):
        pass  # 跳过错误行
    elif 'info' in api_response:
        print('Found My Info')
        # 执行info对应的业务逻辑

2. 预先判断键是否存在

直接检查status和info字段是否存在,这种写法逻辑清晰,适合对API响应结构完全明确的场景:

for row in df:
    # 调用API获取api_response
    if 'status' in api_response and api_response['status'].startswith('4'):
        pass
    elif 'info' in api_response:
        print('Found My Info')
        # 执行info对应的业务逻辑

3. 优化后的try-except写法

如果坚持使用异常捕获,一定要指定具体的异常类型(这里是KeyError),避免捕获无关异常:

for row in df:
    # 调用API获取api_response
    try:
        status = api_response['status']
        if status.startswith('4'):
            pass
    except KeyError:
        # 没有status字段,判定为成功响应
        if 'info' in api_response:
            print('Found My Info')
            # 执行info对应的业务逻辑

为什么不推荐裸except?

裸except会捕获所有类型的异常(比如TypeError、NameError等),如果API调用返回非字典类型的响应,或者代码出现拼写错误,都会被这个except块掩盖,导致你无法及时发现真正的问题。

内容的提问来源于stack exchange,提问作者SCool

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:25:55