Python中的traceback模块
时间:2010-09-18 来源:lexus
Python中的traceback模块
traceback模块被用来跟踪异常返回信息. 如下例所示:
import traceback
try:
raise SyntaxError, "traceback test"
except:
traceback.print_exc()
将会在控制台输出类似结果:
Traceback (most recent call last):
File "H:\PythonWorkSpace\Test\src\TracebackTest.py", line 3, in <module>
raise SyntaxError, "traceback test"
SyntaxError: traceback test
类似在你没有捕获异常时候, 解释器所返回的结果.
你也可以传入一个文件, 把返回信息写到文件中去, 如下:
import traceback
import StringIO
try:
raise SyntaxError, "traceback test"
except:
fp = StringIO.StringIO() #创建内存文件对象
traceback.print_exc(file=fp)
message = fp.getvalue()
print message
这样在控制台输出的结果和上面例子一样
traceback模块还提供了extract_tb函数来格式化跟踪返回信息, 得到包含错误信息的列表, 如下:
H:\PythonWorkSpace\Test\src\TracebackTest.py line: 7 in <module>
tracebacktest()
H:\PythonWorkSpace\Test\src\TracebackTest.py line: 5 in tracebacktest
raise SyntaxError, "traceback test"
** <type 'exceptions.SyntaxError'>: traceback test
import traceback
try:
raise SyntaxError, "traceback test"
except:
traceback.print_exc()
将会在控制台输出类似结果:
Traceback (most recent call last):
File "H:\PythonWorkSpace\Test\src\TracebackTest.py", line 3, in <module>
raise SyntaxError, "traceback test"
SyntaxError: traceback test
类似在你没有捕获异常时候, 解释器所返回的结果.
你也可以传入一个文件, 把返回信息写到文件中去, 如下:
import traceback
import StringIO
try:
raise SyntaxError, "traceback test"
except:
fp = StringIO.StringIO() #创建内存文件对象
traceback.print_exc(file=fp)
message = fp.getvalue()
print message
这样在控制台输出的结果和上面例子一样
traceback模块还提供了extract_tb函数来格式化跟踪返回信息, 得到包含错误信息的列表, 如下:
import traceback
import sys
def tracebacktest():
raise SyntaxError, "traceback test"
try:
tracebacktest()
except:
info = sys.exc_info()
for file, lineno, function, text in traceback.extract_tb(info[2]):
print file, "line:", lineno, "in", function
print text
print "** %s: %s" % info[:2]
H:\PythonWorkSpace\Test\src\TracebackTest.py line: 7 in <module>
tracebacktest()
H:\PythonWorkSpace\Test\src\TracebackTest.py line: 5 in tracebacktest
raise SyntaxError, "traceback test"
** <type 'exceptions.SyntaxError'>: traceback test
相关阅读 更多 +