python 打印完整異常問(wèn)題
python打印完整異常
import traceback
if __name__ == "__main__":
try:
print(1/0)
except Exception:
print(traceback.format_exc())python異常捕獲與打印
為什么要進(jìn)行異常捕獲?
在python程序中如果代碼中有異常,不進(jìn)行異常捕獲的話(huà),代碼遇到異常就會(huì)終止運(yùn)行,影響程序的健壯性,故要進(jìn)行異常捕獲處理,使得程序遇到不可知的異常,不會(huì)終止,在exception代碼塊中進(jìn)行異常處理后繼續(xù)后面的代碼執(zhí)行。
異常捕獲是捕獲什么?
* 異常類(lèi)型
* 異常追蹤信息
* 異常內(nèi)容
異常捕獲的代碼格式?
try:
? ? {content code}
except Exception as e:
? ? print("substitude exception,type={},content={}".format(repr(e),e))#y
else:
? ? print("code exec correct")#沒(méi)有遇到異常,可以省略
finally:
? ? ?print("finnally echo")#無(wú)論是否遇到異常都會(huì)執(zhí)行這段內(nèi)容,先執(zhí)行exception處理,后執(zhí)行finally利用raise自己定義異常并拋出,拋出的異常必須繼承一個(gè)已有的異常類(lèi)型,如TypeError(“param must be dict”)
def func3(p):
? ? if type(p)!= dict:
? ? ? ? raise TypeError("param must be dict")
? ? else:
? ? ? ? print(p)
if __name__ == '__main__':
?try:
? ? func3("123")
?except Exception as e:
? ? print("exception,type={},content={}".format(repr(e),e))
?finally:
? ? ?print("finnally echo")
? ? --------------------
? ? 打印結(jié)果
? ? exception,type=TypeError('param must be dict'),content=param must be dict
finnally echo打印異常
代碼舉例:
try:
? ? str2json = json.loads(str)
? ? return jsonpath.jsonpath(str2json,expr)
except Exception as e:
? ? cls.logger.info('collectjson exception = {}'.format(str(e)))repr(e) 打印異常的類(lèi)型 ,如在json轉(zhuǎn)字符串時(shí),傳入一個(gè)字符串,那么會(huì)拋異常,repr(e)打印的是 JSONDecodeError('Extra data: line 1 column 8 (char 7)',清晰的看出來(lái)這個(gè)是json轉(zhuǎn)換出了問(wèn)題
str(e) 打印問(wèn)題代碼的具體問(wèn)題行
Traceback (most recent call last):
File "D:/python-workspace/iaminterfaceTest/jsonUtil.py", line 14, in collectjson
str2json = json.loads(str)
File "D:\python37\Lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "D:\python37\Lib\json\decoder.py", line 340, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 8 (char 7)
常見(jiàn)異常
IOError文件讀寫(xiě)異常,一般是文件不存在或者文件不可寫(xiě)入ImportError無(wú)法導(dǎo)入模塊或者對(duì)象,主要是路徑有誤或名稱(chēng)錯(cuò)誤TypeError類(lèi)型轉(zhuǎn)換異常KeyError ditc讀取key值不對(duì),一般是不存在這個(gè)key值
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解析Python中的__getitem__專(zhuān)有方法
__getitem__是Python雙下劃線(xiàn)包圍的special method之一,這里我們就來(lái)解析Python中的__getitem__專(zhuān)有方法的使用,需要的朋友可以參考下:2016-06-06
Python數(shù)據(jù)結(jié)構(gòu)與算法之常見(jiàn)的分配排序法示例【桶排序與基數(shù)排序】
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之常見(jiàn)的分配排序法,結(jié)合實(shí)例形式分析了桶排序與基數(shù)排序的相關(guān)原理及實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式
今天小編就為大家分享一篇使用 Supervisor 監(jiān)控 Python3 進(jìn)程方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python OpenCV實(shí)現(xiàn)傳統(tǒng)圖片格式與base64轉(zhuǎn)換
Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)碼的編碼方式之一,本文主要介紹了Python OpenCV實(shí)現(xiàn)傳統(tǒng)圖片格式與base64轉(zhuǎn)換,感興趣的可以參考一下2021-06-06
Python統(tǒng)計(jì)時(shí)間內(nèi)的并發(fā)數(shù)代碼實(shí)例
這篇文章主要介紹了Python統(tǒng)計(jì)時(shí)間內(nèi)的并發(fā)數(shù)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
python動(dòng)態(tài)進(jìn)度條的實(shí)現(xiàn)代碼
有時(shí)候我們需要使用print打印工作進(jìn)度,正常使用print函數(shù)會(huì)導(dǎo)致刷屏的現(xiàn)象,本文通過(guò)實(shí)例代碼給大家介紹python動(dòng)態(tài)進(jìn)度條的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2019-07-07
Python實(shí)現(xiàn)圖片與視頻互轉(zhuǎn)代碼實(shí)戰(zhàn)(親測(cè)有效)
圖片轉(zhuǎn)視頻,視頻轉(zhuǎn)圖片手機(jī)一操作,立馬轉(zhuǎn)換過(guò)來(lái),那么基于代碼是如何操作的呢?下面小編給大家?guī)?lái)了Python實(shí)現(xiàn)圖片與視頻互轉(zhuǎn)代碼實(shí)戰(zhàn),感興趣的朋友跟隨小編一起看看吧2021-12-12
將字典轉(zhuǎn)換為DataFrame并進(jìn)行頻次統(tǒng)計(jì)的方法
下面小編就為大家分享一篇將字典轉(zhuǎn)換為DataFrame并進(jìn)行頻次統(tǒng)計(jì)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04

