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

Python异常捕获时匹配429错误的if语句无法触发如何解决

问题原因

  • 你捕获到的err是异常类的实例对象,不是整数也不是纯字符串:你打印err时看到的文本是自动调用__str__方法输出的可读内容,直接用err == 429或者err == 错误字符串都会因为类型不匹配判断失败
  • 第二个if语句末尾遗漏了冒号,属于语法错误,就算条件符合也无法正常执行
  • 额外问题:你打印日志的语句里直接填了KeyError类,不管实际抛出的是你捕获列表里的哪种异常,都会错误打印Key error,实际应该取type(err)获取真实异常类型

修复方案

优先选择匹配状态码属性的方案(可靠性更高),如果异常没有对应属性再选择匹配字符串的方案:

try:
    <---irrelevant code--->
except (ResponseError, RuntimeError, TypeError, NameError, KeyError) as err: 
    # 修复日志打印的错误类型输出
    print("Error: {}. {}, while querying {} pausing".format(type(err).__name__, err, stock))
    # 方案1:如果异常类有status_code属性,优先用状态码判断(根据你用的库不同,属性名可能是err.status_code / err.response.status_code)
    if hasattr(err, "status_code") and err.status_code == 429:
        print("429 error")
        <---more actions--->
    # 方案2:转成字符串匹配,增加in判断适配可能的文本差异
    elif "returned a response with code 429" in str(err):
        print("429 error")
        <---more actions--->

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:18:03