我使用一些谷歌API作为研究员:
def get_address(lat, lng):
url = "https://maps.googleapis.com/maps/api/geocode/json?{}".\
format(urllib.parse.urlencode(args))
...
try:
r = requests.get(url)
...
return r
except OSError as e:
raise NetException(e.message, 400)
当我尝试使用try-exception句柄时,如果网络错误则使用。 the try-exception Expression is from here
def try_except(success, failure, *exceptions):
try:
return success()
except exceptions or Exception:
return failure() if callable(failure) else failure
但是当我尝试使用这些异常时,我总是得到http的失败结果,即使我只是运行成功函数我得到了成功结果。
>>> re=get_address(-33.865, 151.2094)
>>> re
'Sydney'
>>> r=try_except(get_address(-33.865, 151.2094),"")
>>> r
''
如何确保成功的结果将获得正确的字符串重用,而http请求的onlly失败会得到失败的结果?
答案 0 :(得分:0)
您必须将函数作为success
参数传递。目前在
r=try_except(get_address(-33.865, 151.2094),"")
您传递get_address(-33.865, 151.2094)
的结果值'Sydney'
。尝试致电success()
并转换为'Sydney'()
时出现实际错误 - 类似于str object is not callable
正确的电话会是
r=try_except(lambda: get_address(-33.865, 151.2094), '')