Python異常模組traceback用法例項分析
本文例項講述了Python異常模組traceback用法。分享給大家供大家參考,具體如下:
traceback模組被用來跟蹤異常返回資訊. 如下例所示:
import traceback try: raise SyntaxError,"traceback test" except: traceback.print_exc()
將會在控制檯輸出類似結果:
Traceback (most recent call last):
File "H:PythonWorkSpaceTestsrcTracebackTest.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:","in",function print text print "** %s: %s" % info[:2]
控制檯輸出結果如下:
H:PythonWorkSpaceTestsrcTracebackTest.py line: 7 in <module>
tracebacktest()
H:PythonWorkSpaceTestsrcTracebackTest.py line: 5 in tracebacktest
raise SyntaxError,"traceback test"
** <type 'exceptions.SyntaxError'>: traceback test
test1.py中,當分母為0的時候,呼叫系統退出。程式碼如下:
#!/usr/bin/python import sys def division(a=1,b=1): if b==0: print 'b eq 0' sys.exit(1) else: return a/b
test2.py中,用try..except
捕獲異常,然後traceback.print_exc()
列印。
程式碼如下:
#!/usr/bin/python import sys import traceback import test1 a=10 b=0 try: print test1.division(a,b) except: print 'invoking division failed.' traceback.print_exc() sys.exit(1)
執行test2.py失敗丟擲異常。
$python test2.py
execution python-2.5.1/python (enodeb/linux) b eq 0 invoking division failed. Traceback (most recent call last): File "test2.py",line 10,in <module> test1.division(a,b) File "/home/fesu/test1.py",line 6,in division sys.exit(1) SystemExit: 1
更多Python相關內容感興趣的讀者可檢視本站專題:《Python入門與進階經典教程》、《Python字串操作技巧彙總》、《Python列表(list)操作技巧總結》、《Python編碼操作技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》及《Python檔案與目錄操作技巧彙總》
希望本文所述對大家Python程式設計有所幫助。