Try-Except-Finally语句的过时书籍描述

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)

在这里,我曾经exceptfinallytry一部分一起使用过,不是吗?并且代码可以正常工作.我无法理解这本书的内容!

有人请澄清一下.谢谢.

And*_*ker 14

这已经从python 2.5开始修复,并在文档中清楚地注明

换句话说,您的图书不正确/已过期


Teh*_*nix 6

我相信这本书实际上给出了这个例子,因此我完全不知道他的意思.正如之前的回答所指出的那样,这在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)