过时的Try-Except-Finally语句书籍描述
我正在看一本叫《Apress, Beginning Python from Novice to Professional》的书。书中提到:
最后,你可以使用 try/finally 结构,如果你需要确保某段代码(比如清理代码)无论是否发生异常都能执行。这段代码就放在 finally 部分。需要注意的是,在同一个 try 语句中,你不能同时有 except 和 finally,但你可以把它们嵌套在一起。
我试了这个代码:
def someFunction():
a = None
try:
a = 1 / 0
except ZeroDivisionError, e:
print 'Yesss'
print e
finally:
print 'Cleanup'
del a
if __name__ == '__main__':
someFunction()
...输出结果是
Yesss
integer division or modulo by zero
Cleanup
在这里,我在同一个 try
代码块中使用了 except
和 finally
,对吧?而且代码运行得很好,跟我预期的一样。我有点搞不懂书里说的是什么意思!
有人能帮我解释一下吗?谢谢。
4 个回答
1
那本书可能有点问题,我担心是这样,因为Python的官方文档里用了三种方法。也许该换一本新书了?
6
我觉得这本书其实已经给出了这个例子,所以我不太明白他具体想表达什么。正如之前的回答提到的,这个在Python 2.5的时候就已经改过了,所以
try:
try:
print 'something'
except:
print 'some weird error'
finally:
print 'finally something
相当于
try:
print 'something'
except:
print 'some weird error'
finally:
print 'finally'
14
这个问题在Python 2.5版本就已经修复了,相关信息在文档中有明确说明。
换句话说,你的书是错误的或者过时了。