通常出現異常時,我們需要指定發生異常錯誤的檔案,行號,以及相關異常資訊
而python中無法直接讀取異常資訊(php中可以直接使用異常物件獲取所有相關資訊)
python 可以使用 異常物件 或 異常物件.args 可以得到異常資訊(不能獲取異常檔案,行號等資訊)
還可以使用python中的sys模組進行處理
########### 獲取異常資訊 ############
import sys
try:
print
(name)
except
:# 獲取異常資訊
info = sys.exc_info (
) f = sys.exc_info ()[
2].tb_frame
# 錯誤資訊
print
(info[1]
)# 檔案路徑
print
(str
(f).split (
',')[1
])# 行號
print
(str
(f).split (
',')[2
])
自定義異常類一般繼承exception,也可以繼承baseexception
############# 自定義異常類 #################
class
myexception
(exception)
: error =
def__init__
(self)
:import sys
info = sys.exc_info (
) f = sys.exc_info ()[
2].tb_frame
# 錯誤資訊
self.error[
'msg']=
str(info[1]
)# print(info)
# print(self.error)
# 檔案路徑
self.error[
'file']=
str(f)
.split (
',')[1
]# 行號
self.error[
'line']=
str(f)
.split (
',')[2
]import time
# 發生的時間
self.error[
'errortime'
]= time.strftime (
'%y%m%d %h:%m:%s'
,time.localtime ())
self.write_error (
)# 把錯誤資訊寫入日誌檔案中
defwrite_error
(self)
:with
open
('./error.log'
,'a+'
,encoding=
"utf-8"
)as fp:
log =
' \n'
.format
(**self.error)
fp.write (log)
# 引發異常類,在異常處理中手動呼叫自定義異常類,進行處理
try:
print
(name)
# nameerror
except
:# 收到呼叫 自定義的異常處理類
myexception (
)# 繼續進行其他的異常錯誤
print
('有錯誤'
)
這樣就可以在當前資料夾下的error.log裡檢視錯誤日誌了 Python 獲取子執行緒異常資訊
今天在寫東西的時候,用到了多執行緒。遇到了個問題 子執行緒的異常,在父執行緒中無法捕獲。問題 示例 如下 import threading class samplethread threading.thread defrun self raise exception an error occured...
traceback模組 獲取異常資訊
除了使用 sys.exc info 方法獲取更多的異常資訊之外,還可以使用 traceback 模組,該模組可以用來檢視異常的傳播軌跡,追蹤異常觸發的源頭。下面示例顯示了如何顯示異常傳播軌跡 class selfexception exception pass def main firstmetho...
使用traceback獲取詳細的異常資訊
try 1 0except exception,e print e輸出結果是integer division or modulo by zero,只知道是報了這個錯,但是卻不知道在哪個檔案哪個函式哪一行報的錯。下面使用traceback模組 import traceback try 1 0excep...