IT Rescue IT関連Tips情報

Python2.5新機能ピックアップ (1) : Unified try/except/finally

2006年9月20日python&zope

独断と主観で選んだPython2.5の新機能の紹介シリーズ(1).6 PEP 341: Unified try/except/finally について.
2.5以前のPythonでは finally節を持つtry節にはexceptionを書けませんでした.なので,以前はこんなコードを書いていたのです.

lock = threading.Lock()
try :
    lock.acuire()
    try :
        ... do something ...
    except ValueError :
        ... handling exception ....
finally :
     lock.release()

ロックの解放を確実にするためにfianlly節に書きたいのだが,except節とfinally節は同時には書けないので,入れ子のtryでしのいでたんです.

これが,Python2.5からは同時に書けるので以下のようにすっきりします.

lock = threading.Lock()
try :
    lock.acquire()
    ... do something ...
except ValueError :
    ... handling exception ...
finally :
    lock.release()

ちなみに,例外が発生しなかった場合に実行されるelse節も同時に書けます.


コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。