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?
Спасибо
Ответы
Ответ 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...