2013年12月27日 星期五

python 小技巧 try except 捕捉錯誤時,列印錯誤行數

import sys

sys.exc_info() 返回一個tuple,能取得 (type, value, traceback)
 
例:
>>> sys.exc_info()
(, Empty(), ) 
 
我取出 traceback 出來用 
traceback = sys.exc_info()[2]

而 traceback.tb_lineno 能列印錯誤行數
 
所以我將程式改寫並包裝成一個函數來使用
traceback(err) 顯示錯誤的時間、錯誤訊息,錯誤的所在行數 

import sys, time

def traceback(err):
    now = time.strftime('%H:%M:%S', time.localtime(time.time()))
    traceback = sys.exc_info()[2]
    print now, err, 'exception in line', traceback.tb_lineno






沒有留言:

張貼留言