Python2.5新機能ピックアップ (1) : Unified try/except/finally
2006.09.20
独断と主観で選んだ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節も同時に書けます.カテゴリー:技術情報メモ
