如何在IronPython中打印脚本行号?
我在一个C#应用程序里运行一个IronPython脚本,我在脚本中捕捉异常,并且我想知道异常是在哪一行代码抛出的。这个过程需要在脚本运行的时候进行,也就是说,我不想让脚本停止运行来打印这个异常。
这样做有可能吗?
2 个回答
0
我还没在IronPython上试过这个,但:
import traceback
try:
# something that raises exception
except YourException, _:
traceback.print_exc()
这段代码应该能让你看到异常发生的地方的堆栈跟踪。除了打印信息,你还可以做其他事情,比如把信息打印成字符串,或者获取堆栈帧的内容。想了解更多,可以查看traceback模块的文档。
1
如果在IronPython下inspect
能正常工作(我不太确定),那么这个方法可能会有效:
import inspect
filename, linenum, funcname = inspect.getframeinfo(inspect.currentframe())[:3]
print linenum
补充说明: 另一种解决方案:
import sys
frame = sys._getframe()
print frame.f_lineno