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

Try Except处理API请求异常:遇HTTPError填充0并继续下一个ID请求

问题修复方案

你的核心问题是异常触发时未递增索引i,导致循环一直卡在同一个ID上,反复抛出异常并填充错误值。以下是符合需求的修正代码:

import requests
new_budget = []
new_revenue = []
i = 42
start_time = time.time()
while len(new_budget) < 20:
    try:
        movie_id = dfbudget['id'].iloc[i]
        response = tmdb.Movies(movie_id).info()
        # 提取预算和收入,API无对应字段时默认返回0
        new_budget.append(response.get('budget', 0))
        new_revenue.append(response.get('revenue', 0))
    except requests.HTTPError:
        # 遇到HTTP错误时填充0
        new_budget.append(0)
        new_revenue.append(0)
    except Exception as e:
        # 捕获其他异常并记录,避免程序崩溃
        print(f"处理ID {dfbudget['id'].iloc[i]}时出错: {str(e)}")
        new_budget.append(0)
        new_revenue.append(0)
    finally:
        # 无论成功失败,都推进到下一个ID
        i += 1

关键优化说明:

  • 精准捕获异常:不再用裸except隐藏所有错误,只针对HTTPError做指定处理,其他异常单独捕获记录,方便排查问题。
  • finally块确保索引递增:不管请求成功还是触发异常,都会执行i +=1,彻底避免循环卡在同一个ID上的问题。
  • 安全取值方式:用response.get()替代直接键取值,API返回缺少目标字段时自动返回0,避免额外触发KeyError。
  • 变量名规范:将id改为movie_id,避免和Python内置函数id()冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:15:31