我在这里阅读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块中未引发的异常。我不明白他们的意思。谁能举个例子?
答案 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'
。