【问题标题】:else clause in try statement... what is it good for [duplicate]try 语句中的 else 子句...对 [重复] 有什么好处
【发布时间】:2011-04-29 02:54:46
【问题描述】:

可能重复:
Python try-else

来自 Java 背景,我不太明白 else 子句有什么用处。

根据文档

它对于必须是的代码很有用 如果 try 子句不执行,则执行 引发异常。

但是为什么不把代码放在 try 块之后呢?我似乎在这里遗漏了一些重要的东西......

【问题讨论】:

标签: python exception-handling


【解决方案1】:

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 执行操作,因为您知道它的分配成功。如果代码只是在 try ... except 之后,您可能没有f

【讨论】:

    【解决方案2】:

    考虑

    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 块之外会发生什么?

    【讨论】:

    • 这也比将它放在分配给a 之后,在except 之前更好——这相当于这个例子——因为它可以防止捕获不需要的异常。
    【解决方案3】:

    它适用于您想要只在没有引发异常时执行的代码

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2016-11-25
      • 2011-09-20
      • 2016-05-05
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多