Python:sys模組的excepthook()函式(例外的堆疊追蹤6)
阿新 • • 發佈:2018-12-19
""" 1.對於一個未匹配到的例外,python直譯器最後會呼叫sys.excepthook()並傳入3個自變數:例外型別、例外例項 和traceback物件,也就是sys.exc_info()返回元組中的3個值。預設顯示相關例外的追蹤資訊。 2.如果想自定義sys.excepthook()被呼叫時的行為,可以自定義一個接受3個自變數的函式給sys.excepthook。 """ import time,sys def m(): return 1 / 0 def n(): m() def p(): n() def myExcepthook(ttype,tvalue,ttraceback): print("例外型別:{}".format(ttype)) print("例外物件:{}".format(tvalue)) i = 1 while ttraceback: print("第{}層堆疊資訊".format(i)) tracebackCode = ttraceback.tb_frame.f_code print("檔名:{}".format(tracebackCode.co_filename)) print("函式或者模組名:{}".format(tracebackCode.co_name)) ttraceback = ttraceback.tb_next i += 1 if __name__ == '__main__': sys.excepthook = myExcepthook p() time.sleep(3) print("繼續執行")