如何检索导致异常的代码行(不是行号)?
这是一次尝试。
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)
答案 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']