所以,我希望能够在一个URL列表中运行for,如果一个失败,那么我想继续尝试下一个。
我尝试过使用以下内容但遗憾的是,如果第一个网址不起作用,它会抛出异常。
servers = ('http://www.google.com', 'http://www.stackoverflow.com')
for server in servers:
try:
u = urllib2.urlopen(server)
except urllib2.URLError:
continue
else:
break
else:
raise
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
servers = ('http://www.google.com', 'http://www.stackoverflow.com')
for server in servers:
try:
u = urllib2.urlopen(server)
except urllib2.URLError:
continue
else:
break
else:
raise
如果网址连接没有引发错误(else: break
部分),则此代码会突破循环。
如果第一个失败,您是否希望第二个仅使用?
编辑:我认为for循环之后的else:
应该raise
,因为break
,但是在我的快速测试中没有用...因为我对for/else的理解是错误的
答案 1 :(得分:0)
所以问题结果是用户错误。我正在尝试像“wegwegwe.com”这样的愚蠢域名,但我从未真正在列表中拥有一个可用的域名,所以最终它只是提出了例外。
用户错误。