Geopy 异常处理

Posted

技术标签:

【中文标题】Geopy 异常处理【英文标题】:Geopy exception handling 【发布时间】:2012-05-27 07:10:04 【问题描述】:

回溯(最近一次通话最后一次): 文件“C:\Users\Penguin\workspace\geocode-nojansdatabase\src\geocode.py”,第 15 行,在 地点, (lat, lng) = g.geocode(a) 地理编码中的文件“C:\Python27\lib\site-packages\geopy-0.94.2-py2.7.egg\geopy\geocoders\google.py”,第 81 行 返回self.geocode_url(url,exact_one) 文件“C:\Python27\lib\site-packages\geopy-0.94.2-py2.7.egg\geopy\geocoders\google.py”,第 88 行,位于 geocode_url 返回调度(页面,exact_one) 文件“C:\Python27\lib\site-packages\geopy-0.94.2-py2.7.egg\geopy\geocoders\google.py”,第 111 行,在 parse_xml "(找到 %d 个。)" % len(places)) ValueError:没有找到确切的地标! (找到 3 个。)

当 geopy 遇到一个它不喜欢的地址时,我的应用程序会终止。我想知道的是如何在 Python 中捕获异常并允许我的程序继续进行下一个条目。源码如下:

import csv
from geopy import geocoders
import time

g = geocoders.Google()

spamReader = csv.reader(open('locations.csv', 'rb'), delimiter='\t', quotechar='|')

f = open("output.txt",'w')

for row in spamReader:
     a = ', '.join(row)
     #exactly_one = False
     time.sleep(1)
     place, (lat, lng) = g.geocode(a)
     b = "\"" + str(place) + "\"" + "," + str(lat) + "," + str(lng) + "\n"
     print b
     f.write(b)

【问题讨论】:

您的回溯格式缺少所有换行符,因此难以阅读 - 在每行末尾添加两个空格以保留它们,或者像代码一样将其放在缩进块中。跨度> 【参考方案1】:

要让您的程序忽略 ValueError 而不是终止它,请通过替换来捕获异常:

 place, (lat, lng) = g.geocode(a)

与:

 try:
     place, (lat, lng) = g.geocode(a)
 except ValueError:
     continue

(continue 使它进入 for 循环的下一个重复,而不是尝试执行当前循环的其余部分 - 这似乎是正确的做法,因为当前循环的其余部分取决于地点、纬度、经度)。

或者,如果您希望它打印一条消息,请使用

 try:
     place, (lat, lng) = g.geocode(a)
 except ValueError as error_message:
     print("Error: geocode failed on input %s with message %s"%(a, error_message))
     continue

或者类似的东西。

【讨论】:

以上是关于Geopy 异常处理的主要内容,如果未能解决你的问题,请参考以下文章

springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如

java异常处理详解!!

Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )

Kotlin 协程Flow 流异常处理 ( 收集元素异常处理 | 使用 try...catch 代码块捕获处理异常 | 发射元素时异常处理 | 使用 Flow#catch 函数捕获处理异常 )

异常处理,约束,MD5加密,日志处理

PHP异常处理