我正在尝试重新引发异常,以便为用户提供有关实际错误的更好信息。Python 3.3 包括PEP 409。它添加了raise NewException from None
抑制原始异常上下文的语法。
但是,我的目标是 Python 3.2。Python 脚本将解析,但在运行时如果遇到from None
它将生成的语法 TypeError: exception causes must derive from BaseException
。例如:
try:
regex_c = re.compile('^{}$'.format(regex))
except re.error as e:
e_msg = 'Regular expression error in "{}"'.format(regex)
e_reraise = Exception(e_msg)
# Makes use of the new Python 3.3 exception syntax [from None]
# to suppress the context of the original exception
# Causes an additional TypeError exception in Python 3.2
raise e_reraise from None
封装raise e_reraise from None
在一个try
just 中会产生一个更大的异常堆栈跟踪。版本检查也不起作用,因为我python3.3
在 Xubuntu 12.10 上提取/usr/lib/python3/dist-packages/*
了为 python3.2 模块设置的模块。(你会得到一个方便Error in sys.excepthook:
,它会产生大量的回溯。)
有没有办法在 Python 3.3 中运行时使用 PEP 409 功能,而在 Python 3.2 中默默地忽略它?