防止错误停止Python脚本

防止错误停止Python脚本,python,Python,使用Python 2.6,当我运行下面的脚本时,会出现以下错误: Traceback (most recent call last): File "g.py", line 7, in <module> results = Geocoder.geocode(row[0]) File "/usr/lib/python2.6/site-packages/pygeocoder.py", line 261, in geocode return GeocoderResu

使用Python 2.6,当我运行下面的脚本时,会出现以下错误:

Traceback (most recent call last):
  File "g.py", line 7, in <module>
    results  = Geocoder.geocode(row[0])
  File "/usr/lib/python2.6/site-packages/pygeocoder.py", line 261, in geocode
    return GeocoderResult(Geocoder.getdata(params=params))
  File "/usr/lib/python2.6/site-packages/pygeocoder.py", line 223, in getdata
    raise GeocoderError(j['status'], url)
pygeocoder.GeocoderError: Error ZERO_RESULTS
Query: http://maps.google.com/maps/api/geocode/json?region=&sensor=false&bounds=&language=&address=%22++A+FAKE+ADDRESS
我只是希望脚本即使出现错误也能继续


谢谢大家!

write
调用周围有try/except块,该调用不可能抛出GeoCoderError,但在
geocoder()
调用周围没有try/except块,该调用可能(而且显然确实)抛出该错误。您可能需要以下内容:

try:
    results  = Geocoder.geocode(row[0])
    (lat, long) = results[0].coordinates
except GeocoderError:
    (lat, long) = (0.0, 0.0)

使用以下类似的try-except-finally语句:

try:
    f.write(str(lat))
except GeocodeError:
    pass
finally:
    do_something_else_regardless_of_above

使用
try:except GeocoderError
部分,您的思路是正确的,但它们位于错误的位置。您需要移动它们来包装
Geocoder.geocode
调用,因为这就是引发错误的原因:

        for row in theSpreadsheet:
                try:
                        results  = Geocoder.geocode(row[0])
                except GeocoderError:
                        continue
                (lat, long) = results[0].coordinates
还要注意,您需要从
pygeocoder
导入
GeocoderError
名称。另外,
long
是Python中的一个关键字,因此我建议为该变量选择一个不同的名称

#starting from line 6:
for row in theSpreadsheet:
        try:
            results  = Geocoder.geocode(row[0])
        except:
            pass
#rest of script . . .
您还可以使用“except”来处理特定错误 前


如果您将
try
/
catch
放在实际引发异常的代码部分周围,这会有所帮助。谢谢,这个解释很有意义!我做了以下操作:
用于表格中的行:try:results=Geocoder.geocode(行[0])(lat,long)=results[0]。坐标除外:(lat,long)=(0.0,0.0)
#starting from line 6:
for row in theSpreadsheet:
        try:
            results  = Geocoder.geocode(row[0])
        except:
            pass
#rest of script . . .
try:
    results=Geocoder.geocode(row[0])
except GeocodeError:
    #deal with error