繁体   English   中英

python:try / except / else和continue语句

[英]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

它与你使用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)

这是因为continue语句...它将控制转换为语句..尝试删除continue并为x / 0添加条件语句,如if(x!= 1):x / 0然后看到输出你欲望..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM