Python异常模块traceback用法实例分析
本文实例讲述了Python异常模块traceback用法。分享给大家供大家参考,具体如下:
traceback模块被用来跟踪异常返回信息.如下例所示:
importtraceback try: raiseSyntaxError,"tracebacktest" except: traceback.print_exc()
将会在控制台输出类似结果:
Traceback(mostrecentcalllast):
File"H:PythonWorkSpaceTestsrcTracebackTest.py",line3,in
raiseSyntaxError,"tracebacktest"
SyntaxError:tracebacktest
类似在你没有捕获异常时候,解释器所返回的结果.
你也可以传入一个文件,把返回信息写到文件中去,如下:
importtraceback importStringIO try: raiseSyntaxError,"tracebacktest" except: fp=StringIO.StringIO()#创建内存文件对象 traceback.print_exc(file=fp) message=fp.getvalue() printmessage
这样在控制台输出的结果和上面例子一样,traceback模块还提供了extract_tb函数来格式化跟踪返回信息,得到包含错误信息的列表,如下:
importtraceback importsys deftracebacktest(): raiseSyntaxError,"tracebacktest" try: tracebacktest() except: info=sys.exc_info() forfile,lineno,function,textintraceback.extract_tb(info[2]): printfile,"line:",lineno,"in",function printtext print"**%s:%s"%info[:2]
控制台输出结果如下:
H:PythonWorkSpaceTestsrcTracebackTest.pyline:7in
tracebacktest()
H:PythonWorkSpaceTestsrcTracebackTest.pyline:5intracebacktest
raiseSyntaxError,"tracebacktest"
**:tracebacktest
test1.py中,当分母为0的时候,调用系统退出。代码如下:
#!/usr/bin/python importsys defdivision(a=1,b=1): ifb==0: print'beq0' sys.exit(1) else: returna/b
test2.py中,用try..except捕获异常,然后traceback.print_exc()打印。
代码如下:
#!/usr/bin/python importsys importtraceback importtest1 a=10 b=0 try: printtest1.division(a,b) except: print'invokingdivisionfailed.' traceback.print_exc() sys.exit(1)
执行test2.py失败抛出异常。
$pythontest2.py
executionpython-2.5.1/python(enodeb/linux) beq0 invokingdivisionfailed. Traceback(mostrecentcalllast): File"test2.py",line10,intest1.division(a,b) File"/home/fesu/test1.py",line6,indivision sys.exit(1) SystemExit:1
更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。