29

Python 2.5、2.7、3.2の両方で例外のエラー値を保持して使用したいと思います。

Python 2.5および2.7(3.xではない)では、これは機能します。

try:
    print(10 * (1/0))
except ZeroDivisionError,  error:       # old skool
    print("Yep, error caught:", error)

Python 2.7および3.2(2.5ではない)では、これは機能します:

try:
    print(10 * (1/0))
except (ZeroDivisionError) as error:    # 'as' is needed by Python 3
    print("Yep, error caught:", error)

2.5、2.7、3.2の両方で機能するこの目的のコードはありますか?

ありがとう

4

1 に答える 1

39

Python 2.5 から 3.2 で 1 つのコード ベースを使用できますが、簡単ではありません。単一のコード ベースで 2.3 から 3.3 で実行されるcoverage.pyを見ることができます。

例外をキャッチし、それらすべてで機能する例外への参照を取得する方法は次のとおりです。

except ValueError:
    _, err, _ = sys.exc_info()
    #.. use err...

これは次と同等です。

except ValueError as err:
    #.. use err...
于 2012-07-01T20:54:03.973 に答える