try语句中的else子句......它有什么用处

时间:2010-10-22 11:27:40

标签: python exception-handling

  

可能重复:
  Python try-else

来自Java背景,我不太了解else子句有用的东西。

根据文档

  

对必须的代码很有用   如果try子句没有执行则执行   提出异常。

但是为什么不把代码放在try块之后呢?看来我在这里缺少一些重要的东西......

3 个答案:

答案 0 :(得分:10)

else子句特别有用,因为您知道try套件中的代码是成功的。例如:

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print 'cannot open', arg
    else:
        print arg, 'has', len(f.readlines()), 'lines'
        f.close()

您可以安全地对f执行操作,因为您知道它的分配成功了。如果代码只是在尝试之后......除外,您可能没有f

答案 1 :(得分:3)

考虑

try:
    a = 1/0
except ZeroDivisionError:
    print "Division by zero not allowed."
else:
    print "In this universe, division by zero is allowed."

如果将第二个print放在try/except/else块之外会怎样?

答案 2 :(得分:2)

当没有引发异常时,它是您想要执行 的代码。