我有以下代码:
try:
responses = yield [httpClient.fetch(url) for url in urls]
except (HTTPError, IOError, ValueError) as e:
print("caught")
Run Code Online (Sandbox Code Playgroud)
我不能保证给出的网址是有效的.我希望能够使用该例外来验证网址.如何判断哪个URL在捕获的异常中失败?
此外,如果一次提取失败(比如说第一次),它看起来就像是其他提取中断了吗?有办法防止这种情况吗?或者是否有更好的方法来检查在实际获取之前可以获取URL?对此有更好的模式吗?基本上我想并行获取所有URL并知道哪一个可能失败.
最简单的解决方案是传递raise_error=False给fetch().这将始终给您回复,您将能够检查response.error或使用response.rethrow():
responses = yield [httpClient.fetch(url, raise_error=False) for url in urls]
for url, resp in zip(urls, responses):
try:
resp.rethrow()
print("succeeded")
except (HTTPError, IOError, ValueError) as e:
print("caught")
Run Code Online (Sandbox Code Playgroud)