TraceBack模塊


import traceback
def foo(arg):
    try:
        print(int(arg))
    except Exception as e:
        error=traceback.format_exc()
        print('error',error)
        print('type of error',type(error))
foo("777aaa")
打印結果:
error Traceback (most recent call last):
  File "G:/Pycharmprojects/test.py", line 4, in foo
    print(int(arg))
ValueError: invalid literal for int() with base 10: '777aaa'

type of error <class 'str'>

該模塊提供了一個標准界面來提取,格式化和打印Python程序的堆棧跟蹤。它在打印堆棧跟蹤時完全模仿Python解釋器的行為。當您要在程序控制下打印堆棧跟蹤時,例如在解釋器周圍的“包裝器”中,這很有用。

該模塊使用追溯對象 - 這是存儲在sys.last_traceback變量中並作為第三個項目返回 的對象類型sys.exc_info()

該模塊定義了以下功能:

traceback. print_tb tblimit = Nonefile = None 

打印以限制堆棧跟蹤條目從追溯對象tb(從調用方的幀開始),如果limit為正。否則,打印最后的 abs(limit)條目。如果省略限制,或者None打印所有條目。如果文件被省略,或None輸出到 sys.stderr否則應該是一個打開的文件或類似文件的對象來接收輸出。

在版本3.5中更改:添加了負限制支持。

traceback. print_exception etypevaluetblimit = Nonefile = Nonechain = True 

將異常信息和堆棧跟蹤條目從追溯對象tb打印 文件這與print_tb()以下方式不同:

  • 如果tb不是None,它打印頭Traceback (most recent call last):
  • 在堆棧跟蹤之后打印異常etype
  • 如果類型(值)SyntaxError具有適當的格式,它打印其中具有指示誤差的近似位置脫字符號發生的語法錯誤的行。

可選的limit參數與print_tb()如果為真(默認值),則鏈式異常(的 __cause____context__異常的屬性)將被打印,以及像解釋打印未處理的異常時本身一樣。

改變在3.5版本:VLAN時參數將被忽略,並從類型推斷

traceback. print_exc limit = Nonefile = Nonechain = True 

這是一個速記print_exception(*sys.exc_info(), limit, file, chain)

traceback. print_last limit = Nonefile = Nonechain = True 

這是一個速記一般來說,只有在異常已經達到交互式提示之后才會有效(見 )。print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file,chain)sys.last_type

traceback. print_stack f = Nonelimit = Nonefile = None 

打印以限制堆棧跟蹤條目(從調用點開始),如果limit為正。否則,打印最后的abs(limit) 條目。如果省略限制,或者None打印所有條目。可選的f參數可用於指定要啟動的備用堆棧幀。可選文件參數的含義與 print_tb()

在版本3.5中更改:添加了負限制支持。

traceback. extract_tb tblimit = None 

返回從追溯對象tb提取的“預處理”堆棧跟蹤條目列表它對於堆棧跟蹤的替代格式很有用。可選的limit參數與 print_tb()“預處理”堆棧跟蹤條目是表示通常為堆棧跟蹤打印的信息的4元組(文件名行號函數名稱文本)。文本是開頭和結尾的空白剝離的字符串; 如果源不存在,它是None

traceback. extract_stack f =無limit = None 

從當前堆棧幀中提取原始的追溯。返回值的格式與extract_tb()可選的flimit 參數與print_stack()

traceback. format_list extracted_list 

給定由extract_tb()extract_stack()返回的元組列表,或者 返回准備打印的字符串列表。結果列表中的每個字符串對應於參數列表中具有相同索引的項。每個字符串以換行符結尾; 字符串也可能包含內部的換行符,對於源文本行不是的項目 None

traceback. format_exception_only etypevalue 

格式化回溯的異常部分。的參數是異常類型和值,如由下式給出sys.last_typesys.last_value返回值是一個字符串列表,每個都以換行符結尾。通常,列表包含單個字符串; 但是,對於SyntaxError 異常,它包含幾行(打印時)顯示有關發生語法錯誤的詳細信息。指示發生哪個異常的消息是列表中始終最后一個字符串。

traceback. format_exception etypevaluetblimit = Nonechain = True 

格式化堆棧跟蹤和異常信息。參數與相應的參數含義相同print_exception()返回值是字符串列表,每個字符串都以換行符結尾,一些包含內部換行符。當這些線連接並打印時,打印完全相同的文本print_exception()

改變在3.5版本:VLAN時參數將被忽略,並從類型推斷

traceback. format_exc limit = Nonechain = True 

這樣就可以print_exc(limit)返回一個字符串而不是打印到一個文件。

traceback. format_tb tblimit = None 

一個速記format_list(extract_tb(tb, limit))

traceback. format_stack f =無limit = None 

一個速記format_list(extract_stack(f, limit))

traceback. clear_frames tb 

通過調用每個幀對象方法來清除回溯tb中所有堆棧幀的局部變量clear()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM