显示在Python中导致异常的源代码

时间:2018-01-25 17:09:24

标签: python python-3.x logging inspection

如何检索导致异常的代码行(不是行号)?

这是一次尝试。

import sys, inspect
try:
    1 / 0
except Exception as e:
    exc_type, exc_obj, exc_tb = sys.exc_info()
    code = str(inspect.getsourcelines(exc_tb.tb_frame.f_code))        

print(code)

它返回脚本的第一行,而不是导致异常的行。

(['import sys, inspect\n'], 1)

1 个答案:

答案 0 :(得分:1)

下面的代码有效,但它不灵活。其他人可能有更好的解决方案。

import sys, inspect
try:
    y = 2
    a = 1 / 0
except Exception as e:
    exception_occr_at_file = inspect.trace()[0][1]
    line_no = inspect.trace()[0][2]
    code = inspect.trace()[0][4]

print(exception_occr_at_file)
print(line_no)
print(code)

#Ouput:
C:\Users\jianc\Desktop\test\test_print.py
4
['    a = 1 / 0\n']