尝试...除了...作为Python 2.5中的错误 - Python 3.x

sup*_*ing 25 python exception try-catch

我想在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)
Run Code Online (Sandbox Code Playgroud)

在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)
Run Code Online (Sandbox Code Playgroud)

是否有任何代码可用于2.5,2.7和3.2?

谢谢

Ned*_*der 38

您可以在Pythons 2.5到3.2上使用一个代码库,但这并不容易.你可以看看coverage.py,它运行在2.3到3.3之间,只有一个代码库.

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

except ValueError:
    _, err, _ = sys.exc_info()
    #.. use err...
Run Code Online (Sandbox Code Playgroud)

这相当于:

except ValueError as err:
    #.. use err...
Run Code Online (Sandbox Code Playgroud)