bdh*_*har 8 python exception python-2.x python-2.5
我正在关注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()
Run Code Online (Sandbox Code Playgroud)
......而且输出是
Yesss
integer division or modulo by zero
Cleanup
Run Code Online (Sandbox Code Playgroud)
在这里,我曾经except和finally同try一部分一起使用过,不是吗?并且代码可以正常工作.我无法理解这本书的内容!
有人请澄清一下.谢谢.
我相信这本书实际上给出了这个例子,因此我完全不知道他的意思.正如之前的回答所指出的那样,这在python 2.5中已经改变了
try:
try:
print 'something'
except:
print 'some weird error'
finally:
print 'finally something
Run Code Online (Sandbox Code Playgroud)
相当于
try:
print 'something'
except:
print 'some weird error'
finally:
print 'finally'
Run Code Online (Sandbox Code Playgroud)