在 Python 中显示导致异常的源代码
Display source code causing an exception in Python
如何检索导致异常的代码行(不是行号)?
这是一次尝试。
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)
它returns脚本的第一行,而不是导致异常的行。
(['import sys, inspect\n'], 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']
如何检索导致异常的代码行(不是行号)?
这是一次尝试。
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)
它returns脚本的第一行,而不是导致异常的行。
(['import sys, inspect\n'], 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']