1. 程式人生 > 程式設計 >Python異常模組traceback用法例項分析

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程式設計有所幫助。