python獲取異常信息exc_info和print_exc的使用
1 python獲取異常信息exc_info和print_exc
python通過sys.exc_info獲取異常信息,通過traceback.print_exc打印堆棧信息,包括錯誤類型和錯誤位置等信息。
1.1 異常不一定是錯誤
所有錯誤都是異常,但并非所有異常都是錯誤。比如,有些異常表示警告(參考warnings模塊),有些異常是功能信號(比如,input函數從標準輸入流sys.stdin讀取輸入)。
用法
while True:
try:
ins=input('請輸入:')
except EOFError as e:
# except 代碼塊
break
else:
print('你輸入的是:',ins)
描述
(1) 通過input循環(huán)獲取用戶輸入;
(2) 通過EOFError 作為功能信號,觸發(fā)則退出輸入;
(3) 通過Ctrl+D(windows)或Ctrl+Z(Unix)觸發(fā)EOFError 異常;
示例
>>> import traceback
>>> while True:
try:
ins=input('請輸入:')
except EOFError as e:
# 通過 Ctrl+D 或 Ctrl+Z 觸發(fā) EOFError
print('遇到 Ctrl+D 或 Ctrl+Z,退出輸入')
print(traceback.print_exc())
break
else:
print('你輸入的是:',ins)
請輸入:梯閱線條
你輸入的是: 梯閱線條
請輸入:
遇到 Ctrl+D 或 Ctrl+Z,退出輸入
Traceback (most recent call last):
File "<pyshell#58>", line 3, in <module>
EOFError: EOF when reading a line
None
1.2 異常條件語句和raise
python自定義異常也可用于觸發(fā)非錯誤的情況,根據條件語句觸發(fā)raise異常。
用法
class FoundByExc(Exception):pass
def search_by_exc(strlist,target):
if True:
raise FoundByExc("xxx")
else:
return "xxx"
描述
搜索指定內容時觸發(fā)異常。
(1) 自定義一個異常類;
(2) 條件成立,觸發(fā)異常;
示例
>>> class FoundByExc(Exception):pass
>>> def search_by_exc(strlist,target):
for s in strlist:
if s == target:
raise FoundByExc("在{}找到'{}'".format(strlist,target))
else:
return "在{}未找到'{}'".format(strlist,target)
>>> def test_searchbyexc(strlist,target):
try:
sbe=search_by_exc(strlist,target)
except FoundByExc as fbe:
print(fbe)
else:
print(sbe)
>>> strlist=['梯閱線條','tyxt.work','9555']
>>> target1='梯閱線條';target2='tyxt'
>>> test_searchbyexc(strlist,target1)
在['梯閱線條', 'tyxt.work', '9555']找到'梯閱線條'
>>> test_searchbyexc(strlist,target2)
在['梯閱線條', 'tyxt.work', '9555']未找到'tyxt'
1.3 sys.exc_info獲取異常信息
python中空的except捕獲任何未被捕獲的異常,通過sys.exc_info獲取捕獲的實際異常。
用法
import sys sys.exc_info()
描述
返回元組(type,value,traceback),
type:捕獲的異常類型;
value:捕獲的異常類的實例;
traceback:觸發(fā)異常的調用堆棧;
示例
>>> try:
1+[]
except:
print(sys.exc_info())
(<class 'TypeError'>, TypeError("unsupported operand type(s) for +: 'int' and 'list'"), <traceback object at 0x03EFEE40>)
1.4 traceback.print_exc打印異常堆棧
用法
import traceback
try:
# try 代碼塊
except xxx:
# except 代碼塊
traceback.print_exc()
描述
當Python程序發(fā)生異常時,通過traceback.print_exc()獲取異常的詳細信息,包括異常類型、異常值和異常發(fā)生的位置信息。
(1) 導入 traceback模塊;
(2) 在except處理器,調用traceback.print_exc()方法;
示例
>>> import traceback
>>> try:
1+[]
except:
traceback.print_exc()
Traceback (most recent call last):
File "<pyshell#79>", line 2, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'到此這篇關于python獲取異常信息exc_info和print_exc的使用的文章就介紹到這了,更多相關python獲取異常信息 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
From CSV to SQLite3 by python 導入csv到sqlite實例
今天小編就為大家分享一篇From CSV to SQLite3 by python 導入csv到sqlite實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python實現(xiàn)批量上傳本地maven庫到nexus
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)批量上傳本地maven庫到nexus,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以參考下2024-01-01
Python PyQt5實戰(zhàn)項目之查詢器的實現(xiàn)流程詳解
PyQt5以一套Python模塊的形式來實現(xiàn)功能。它包含了超過620個類,600個方法和函數。它是一個多平臺的工具套件,它可以運行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權之間選擇2021-11-11

