[英]python: try/except/else and continue statement
为什么下面的Python代码片段不仅 没有异常的输出:1,自第一次迭代过程中没有出现的异常。 来自python docs( https://docs.python.org/2.7/tutorial/errors.html )。
try ... except语句有一个可选的else子句,当存在时,必须遵循所有except子句。 如果try子句不引发异常,则必须执行的代码很有用。
$ cat hello.py
for x in range(1,10):
try:
if x == 1:
continue
x/0
except Exception:
print "Kaput:%s" %(x)
else:
print "No exception:%s" %(x)
break
$ python hello.py
Kaput:2
Kaput:3
Kaput:4
Kaput:5
Kaput:6
Kaput:7
Kaput:8
Kaput:9
$ python -V
Python 2.7.8
本教程提供了一个良好的开端,但不是语言参考。 在这里阅读参考。
特别注意:
如果控制流出try子句的末尾,则执行可选的else子句。
脚注2澄清:
目前,除了异常或执行return,continue或break语句之外,控制“流出结束”。
因此,您明确地解决了对continue
使用的问题。
你的代码有一个continue
,所以它永远不会到达else
块。 要实现您的结果,您无法进入continue
:
码:
for x in range(1, 10):
try:
if x != 1:
x / 0
except Exception:
print "Kaput:%s" % (x)
else:
print "No exception:%s" % (x)
break
结果:
No exception:1
它与你使用continue
和break
。 我认为这是你想要的功能。 基本上, continue
不跳到else
语句,它继续使用代码(传递了try语句)。 并且, break
中断for循环,因此不再产生输出,所以我删除了该语句。
for x in range(1,10):
try:
if x != 1:
x/0
except Exception:
print "Kaput:%s" %(x)
else:
print "No exception:%s" %(x)
这是因为continue语句...它将控制转换为语句..尝试删除continue并为x / 0添加条件语句,如if(x!= 1):x / 0然后看到输出你欲望..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.