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作为无结果的占位值,也可以换成空列表[]
代码解释
- 导入异常类:
GeocodingError是gmaps库专门为地理编码失败场景定义的异常,用它捕获错误更精准,不会误抓其他无关异常。 - 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
相关产品推荐
相关产品推荐

