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節も同時に書けます.
カテゴリー:技術情報メモ