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

为何Try/Except代码无法捕获HTTPError?天气API请求异常

问题根源与修复方案

兄弟,你的Try/Except写法问题很明确——你把可能抛出HTTPError的核心API请求放在了try代码块外面!

看你的代码:owm.get_current(city, **settings)这行是在try块之前执行的,当这个API请求返回404错误时,异常直接就抛出来了,根本没进入到你后面的try-except逻辑里。毕竟你的try只包裹了打印那两行代码,而打印操作本身是不会触发HTTPError的。

修正后的代码

from urllib.error import HTTPError
for city in cities:
    try:
        # 把API请求挪进try块内,确保异常能被捕获
        current_city = owm.get_current(city, **settings)
        print(f'Current city is {current_city["name"]} and the city number is: {current_city["id"]}')
    except HTTPError as he:
        # 捕获并打印具体错误信息,方便排查问题
        print(f"Ooops,请求出错了:{he}")
    print("------------")

额外调试建议

  • 如果你想覆盖更多异常场景(比如网络连接中断、返回数据解析失败等),可以在捕获HTTPError之后再加一个通用的Exception捕获,但建议先处理特定异常再处理通用情况,这样更容易定位问题。
  • 把HTTPError捕获为变量he能让你看到具体的错误状态码和描述,对调试API请求问题非常有用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:31:58