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()。
