1
我有一个地址解析地址的函数。我不想让这个函数死掉,所以我试图捕获错误并返回一个元组。 但是我也想区分错误,为此我使用try /除了在多个地方。python函数中有多少try/except是太多
是否有太多的尝试/除了这样的事情?你会如何优化这个功能?
这里是我的代码:
def geocode(address):
js = ''
try:
urlq = urllib.urlencode({'address':address, 'sensor':'false'})
except Exception, e:
return (False, "Error url-encoding address. Error:%s" % e, js, 'failed')
try:
f = urllib2.urlopen(GEO_URL + urlq)
d = f.read()
except Exception, e:
return (False, "Error making connection. Error:%s" % e, js, 'failed')
#
try:
js = json.loads(d)
except Exception, e:
return (False, "Error converting JSON. Error:%s" % e, js, 'failed')
return (True, '', js, 'ok')
“我不希望这个函数死掉,所以我试图捕获错误并返回一个元组” - 不要害怕让异常传播。这往往是正确的行动方针。 – user2357112
@ user2357112你是对的,但在这种情况下,我害怕:)因为它是从一个cron作业运行的,我不希望它从一个不好的地址停下来。所以我只记录响应失败。 – LZAntal