将自定义字符串推送到当前的Python堆栈/回溯

时间:2017-09-19 21:13:27

标签: python

如何使用以下API实现上下文管理器:

s = "this is my message"
with PushStackFrame(s):
  raise RuntimeError("something")

这样当引发RuntimeError时,我收到以下消息:

Traceback (most recent call last):
  File "foo.py", line 4, in <module>
    ## PushStackFrame: this is my message  ## KEY LINE
  File "foo.py", line 5, in <module>
    raise RuntimeError("something")
RuntimeError: something

最重要的是,我希望传递给PushStackFrame的字符串能够插入 verbatim 到堆栈跟踪中,我不想只看到代码。

执行此操作的一种方法是在离开上下文管理器的过程中捕获异常,找出在回溯中调用上下文管理器的位置,并在使用traceback重新抛出异常之前插入新的回溯帧。我不想这样做。

0 个答案:

没有答案