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

Python中如何捕获地理编码循环错误并继续执行循环

解决gmaps Geocoding API循环终止问题

嘿,我完全懂你遇到的麻烦!当调用api.geocode(place)时,如果某个地点没有匹配结果,这个方法会直接抛出异常,导致你的循环中途终止。咱们只需要给循环加上异常捕获逻辑,就能让程序跳过错误继续执行啦。

修改后的示例代码

from gmaps import Geocoding
from gmaps.errors import GeocodingError  # 导入gmaps专属的地理编码异常类

api = Geocoding(api_key='API Key')
address = ["Philippines", "Canada", "No place like this, Australia", "Malaysia"]
location = []

for place in address:
    try:
        # 尝试获取当前地点的地理编码结果
        geocode_result = api.geocode(place)
        location.append(geocode_result)
    except GeocodingError:
        # 捕获无匹配结果的异常,自定义处理逻辑
        print(f"⚠️ 无法找到地点: {place}")
        location.append(None)  # 用None作为无结果的占位值,也可以换成空列表[]

代码解释

  1. 导入异常类:GeocodingError是gmaps库专门为地理编码失败场景定义的异常,用它捕获错误更精准,不会误抓其他无关异常。
  2. try-except块:把可能出错的api.geocode(place)调用放在try块里:
    • 如果调用成功,正常把结果加入location列表;
    • 如果触发GeocodingError(比如无匹配地点),就打印提示信息,同时给location添加一个占位值,保证循环能继续处理后续地址。

额外小技巧

如果你暂时不确定具体是哪种异常,也可以先用通用异常捕获来排查问题:

try:
    geocode_result = api.geocode(place)
    location.append(geocode_result)
except Exception as e:
    print(f"处理地点 {place} 时出错: {str(e)}")
    location.append(None)

这样能看到具体的错误信息,方便你进一步调整处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:56:34