2012-10-01 5 views
11

へのpython2.4に働くのpython 3へのpython 2.4から互換性のある例外のキャッチコードを書くためにとにかくはありますか?このコードのようにはのpython3

# only works in python 2.4 to 2.7 
try: 
    pass 
except Exception,e: 
    print(e) 

# only works in python 2.6 to 3.3 
try: 
    pass 
except Exception as e: 
    print(e) 
+1

プロジェクトの多くは、Python 2のために自分のコードを維持し、使用し、言っ

://docs.python.org/library/2to3.html)、必要に応じて自動的にpython 3に変換します。これは通常、両方と互換性のあるコードを記述しようとするより簡単です(これはおそらくあなたが出くわす最も難しい問題ではありません)。 – James

答えて

15

は、Python 2とPython 3の両方で動作するコードを記述しようとはので、それらの間の相違点の膨大な数の、最終的にはかなり無駄です。実際、Python 2とPython 3の別々のバージョンでは、多くのプロジェクトが管理されています。 [2to3は](HTTPあなたは超ポータブルな方法でこれを行うには地獄曲がっている場合...

import sys 
try: 
    ... 
except Exception: 
    t, e = sys.exc_info()[:2] 
    print(e) 
+2

これはスレッドセーフ –

+0

は、あなたの答えをnneonneo、および – yegle

+4

@gnibbler :-)あなたの先端のための@gnibblerあなたに感謝感謝ではありませんが、私はそれがあると信じて... "返された情報は、現在のスレッドに、両方の固有のものです現在のスタックフレームに適用されます。 – nneonneo