python:try / except / else和continue语句

时间:2017-05-06 03:37:24

标签: python python-2.7

为什么以下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

4 个答案:

答案 0 :(得分:5)

本教程提供了一个良好的开端,但不是语言参考。 enter image description here

特别注意:

  

如果控制流出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)

这与您使用continuebreak有关。我认为这是您正在寻找的功能。基本上,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然后看你想要的输出..