为什么以下python代码片段 NOT 的输出只是无例外:1 ,因为在第一次迭代期间没有引发异常。来自python docs(https://docs.python.org/2.7/tutorial/errors.html)。
try ... except语句有一个可选的else子句,当时 礼物,必须遵循除了条款以外的所有条款它对代码很有用 如果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
答案 0 :(得分:5)
特别注意:
如果控制流出try子句的末尾,则执行可选的else子句。
脚注2澄清:
目前,除了异常或执行return,continue或break语句之外,控制“流出结束”。
所以你明确地使用了continue
。
答案 1 :(得分:2)
您的代码有一个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
答案 2 :(得分: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)
答案 3 :(得分:0)
这是因为continue语句...它将控制转换为for语句..尝试删除continue并为x / 0添加条件语句,如if(x!= 1):x / 0然后看你想要的输出..