У меня есть функция, которая геокодирует адрес. Я не хочу, чтобы эта функция умирала, поэтому я пытаюсь поймать ошибку и вместо нее вернусь. Однако я также хочу различать ошибки, для этого я использую try/except в нескольких местах.Сколько попыток/исключений слишком много в функции python
Есть ли такая вещь, как слишком много попыток/кроме? Как бы вы оптимизировали эту функцию?
Вот мой код:
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