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
(tb,limit = None,file = None ) -
打印以限制堆棧跟蹤條目從追溯對象tb(從調用方的幀開始),如果limit為正。否則,打印最后的
abs(limit)
條目。如果省略限制,或者None
打印所有條目。如果文件被省略,或None
輸出到sys.stderr
; 否則應該是一個打開的文件或類似文件的對象來接收輸出。在版本3.5中更改:添加了負限制支持。
-
traceback.
print_exception
(etype,value,tb,limit = None,file = None,chain = True ) -
將異常信息和堆棧跟蹤條目從追溯對象tb打印 到文件。這與
print_tb()
以下方式不同:- 如果tb不是
None
,它打印頭Traceback (most recent call last):
- 它在堆棧跟蹤之后打印異常etype和值
- 如果類型(值)是
SyntaxError
和值具有適當的格式,它打印其中具有指示誤差的近似位置脫字符號發生的語法錯誤的行。
可選的limit參數與
print_tb()
。如果鏈為真(默認值),則鏈式異常(的__cause__
或__context__
異常的屬性)將被打印,以及像解釋打印未處理的異常時本身一樣。改變在3.5版本:該VLAN時參數將被忽略,並從類型推斷值。
- 如果tb不是
-
traceback.
print_exc
(limit = None,file = None,chain = True ) -
這是一個速記。
print_exception(*sys.exc_info(), limit, file, chain)
-
traceback.
print_last
(limit = None,file = None,chain = True ) -
這是一個速記。一般來說,只有在異常已經達到交互式提示之后才會有效(見 )。
print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file,chain)
sys.last_type
-
traceback.
print_stack
(f = None,limit = None,file = None ) -
打印以限制堆棧跟蹤條目(從調用點開始),如果limit為正。否則,打印最后的
abs(limit)
條目。如果省略限制,或者None
打印所有條目。可選的f參數可用於指定要啟動的備用堆棧幀。可選文件參數的含義與print_tb()
。在版本3.5中更改:添加了負限制支持。
-
traceback.
extract_tb
(tb,limit = None ) -
返回從追溯對象tb提取的“預處理”堆棧跟蹤條目列表。它對於堆棧跟蹤的替代格式很有用。可選的limit參數與
print_tb()
。“預處理”堆棧跟蹤條目是表示通常為堆棧跟蹤打印的信息的4元組(文件名,行號,函數名稱,文本)。該文本是開頭和結尾的空白剝離的字符串; 如果源不存在,它是None
。
-
traceback.
extract_stack
(f =無,limit = None ) -
從當前堆棧幀中提取原始的追溯。返回值的格式與
extract_tb()
。可選的f和limit 參數與print_stack()
。
-
traceback.
format_list
(extracted_list ) -
給定由
extract_tb()
或extract_stack()
返回的元組列表,或者 返回准備打印的字符串列表。結果列表中的每個字符串對應於參數列表中具有相同索引的項。每個字符串以換行符結尾; 字符串也可能包含內部的換行符,對於源文本行不是的項目None
。
-
traceback.
format_exception_only
(etype,value ) -
格式化回溯的異常部分。的參數是異常類型和值,如由下式給出
sys.last_type
和sys.last_value
。返回值是一個字符串列表,每個都以換行符結尾。通常,列表包含單個字符串; 但是,對於SyntaxError
異常,它包含幾行(打印時)顯示有關發生語法錯誤的詳細信息。指示發生哪個異常的消息是列表中始終最后一個字符串。
-
traceback.
format_exception
(etype,value,tb,limit = None,chain = True ) -
格式化堆棧跟蹤和異常信息。參數與相應的參數含義相同
print_exception()
。返回值是字符串列表,每個字符串都以換行符結尾,一些包含內部換行符。當這些線連接並打印時,打印完全相同的文本print_exception()
。改變在3.5版本:該VLAN時參數將被忽略,並從類型推斷值。
-
traceback.
format_exc
(limit = None,chain = True ) -
這樣就可以
print_exc(limit)
返回一個字符串而不是打印到一個文件。
-
traceback.
format_tb
(tb,limit = 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()
。