从python文档有关尝试除外

时间:2012-10-22 13:32:24

标签: python-2.7

我在这里阅读python tutorial并且有一件事我无法理解。来自文档:

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()

来自doc:

中的解释

使用else子句比向try子句添加其他代码要好,因为它可以避免意外捕获由try ... except语句保护的代码未引发的异常。 EM>

我的问题是它如何防止意外捕获此try块中未引发的异常。我不明白他们的意思。谁能举个例子?

1 个答案:

答案 0 :(得分:2)

您可能尝试的一种可能的替代方法是:

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

如果在f.readlines()f.close()期间出现异常,则会except阻止该异常,您将收到错误消息'cannot open'