Подтвердить что ты не робот

Try... except... как ошибка в Python 2.5 - Python 3.x

Я хочу сохранить и использовать значение ошибки для исключения в обоих версиях 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?

Спасибо

4b9b3361

Ответ 1

Вы можете использовать одну базу кода на Pythons с 2.5 по 3.2, но это непросто. Вы можете взглянуть на coverage.py, который работает с 2.3 по 3.3 с одной базой кода.

Способ поймать исключение и получить ссылку на исключение, которое работает во всех из них:

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

Это эквивалентно:

except ValueError as err:
    #.. use err...