我有一个功能可以对一个地址进行地理编码。我不希望这个函数死掉,所以我试图捕捉错误并返回一个元组。但是,我也希望区分错误,为此,我使用了try/除了在多个地方。
这样的事情是不是有太多的尝试/除了?您将如何优化此功能?
这是我的代码:
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')发布于 2016-01-21 01:04:05
捕捉Exception总是一个坏主意。您希望指定要捕获的错误。
try:
...
except URLError, e:
return (False, "Error making connection. Error:%s" % e, js, 'failed')
except ValueError, e:
return (False, "Error converting JSON. Error:%s" % e, js, 'failed')
except UnicodeEncodeError, e:
return (False, "Error unicode formatting. Error:%s" % e, js, 'failed')此外,返回一个元组来指示错误通常不是首选的。考虑将try放到调用函数中,并让错误传播。
https://stackoverflow.com/questions/34913494
复制相似问题