Zey*_*nel 22 python exception-handling
我准备运行此代码,但在我想修复异常处理之前:
for l in bios:
OpenThisLink = url + l
try:
response = urllib2.urlopen(OpenThisLink)
except urllib2.HTTPError:
pass
bio = response.read()
item = re.search('(JD)(.*?)(\d+)', bio)
....
Run Code Online (Sandbox Code Playgroud)
正如这里建议的那样,我添加了try...except但是现在如果页面没有打开,我会收到此错误:
bio = response.read()
NameError: name 'response' is not defined
Run Code Online (Sandbox Code Playgroud)
所以程序继续执行.相反,我希望它回到for循环并尝试下一个url.我试过break而不是pass但结束了程序.有什么建议?
Mar*_*ers 41
用continue而不是break.
该声明pass是一个无操作(意味着它没有做任何事情).程序只是继续下一个语句,这就是你得到错误的原因.
break退出循环并在循环后立即从下一个语句继续运行.在这种情况下,没有更多的语句,这就是您的程序终止的原因.
continue重新启动循环,但使用下一个项目.这正是你想要的.
Joc*_*zel 12
尝试实际上比那更强大.你也可以在这里使用else块:
try:
stuff
except Exception:
print "oh no a exception"
else:
print "oh yay no exception"
finally:
print "leaving the try block"
Run Code Online (Sandbox Code Playgroud)