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 上使用一个代码库,但这并不容易。您可以查看coverage.py,它在 2.3 到 3.3 上运行,只有一个代码库。

捕获异常并获取对所有异常都有效的引用的方法是:

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

这相当于:

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