python traceback - 如何引发异常并保留堆栈

python traceback - how to raise an exception and keep the stack

我有 2 个模块:

a.py:

import b
import traceback
try:
    print b.get_val(1)
except Exception as ex:
    traceback.print_stack()
    print ex

问题是堆栈跟踪没有说明 b.py 的哪一行引发了异常。如果存在实际的 运行 时间错误,也会发生这种情况。 对如何显示整个堆栈有什么想法吗?

b.py

def get_val(val):
    print 'hi'
    raise Exception('Bad value')

尝试 traceback.print_exc() 而不是 traceback.print_stack()

traceback.print_stack() 输出:

hi
  File "a.py", line 6, in <module>
    traceback.print_stack()
Bad value

traceback.print_exc() 输出:

hi
Traceback (most recent call last):
  File "a.py", line 4, in <module>
    print b.get_val(1)
  File "C:\Users\Ahmed\Desktop\SOF\b.py", line 3, in get_val
    raise Exception('Bad value')
Exception: Bad value
Bad value