次のものがあるとします。
def foo():
bar()
def bar():
baz()
def baz():
raise ValueError("hello")
foo()
当然のことながら、トレースは
$ python x.py
Traceback (most recent call last):
File "x.py", line 10, in <module>
foo()
File "x.py", line 2, in foo
bar()
File "x.py", line 5, in bar
baz()
File "x.py", line 8, in baz
raise ValueError("hello")
ValueError: hello
ここで、トレースバックを次のようにしたいとします。
Traceback (most recent call last):
File "x.py", line 10, in <module>
foo()
ValueError: hello
つまり、スタック トレースの最上位の 2 つのエントリを削除できるようにしたいのですが、baz()
スタックをマングリングするか、発生した例外を特別な方法。
出来ますか?
編集: 1 つのオプションは、baz 内でレイズしてすぐにキャッチし、トリミングされたトレースバックで再レイズすることですが、その方法がわかりません。
編集2:
私が必要とするのはこれです、疑似コードで
def baz():
raise ValueError, "hello", <traceback built from current frame stack, except the last two>