假设我有一个这样的上下文管理器——它在 Python 2.X 中工作并在退出时保留回溯。
class MyContextManager(object):
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
raise AssertionError("Failed :-/"), None, traceback
在 Python 3 中, raise 是一个语法错误,但我认为你可以设置__traceback__
参数。
def __exit__(self, exc_type, exc_value, traceback):
e = AssertionError("Failed :-/")
e.__traceback__ = traceback
raise e
有没有办法保留与 Python 2 和 Python 3 兼容的回溯(即,两者都不会产生语法错误)?我在这一点上有点卡住了。它需要在 2.6、2.7、3.2 和 3.3 中工作。目标是确保用户仍能看到较早的回溯。