1 異常簡介
捕獲異常try...except...
例1
try:
print(a)
i = 1/0 # 如果前面出現(xiàn)異常,拋出錯(cuò)誤,本行沒有執(zhí)行
except (NameError, ZeroDivisionError) as e:#捕獲多個(gè)異常
print("出現(xiàn)異常:%s"%e)
輸出:
出現(xiàn)異常:name 'a' is not defined
例2
f=None
try: #從本行開始捕獲異常
f = open("text.txt")
try:
content = f.read()
content.index("hadoop")
except Exception as ex: # 捕獲所有異常
print(ex)
except FileNotFoundError as ex: # 捕獲文件不存在的異常
print(ex)
else:#沒有異常的情況會(huì)自動(dòng)執(zhí)行的代碼
print("沒有異常的情況會(huì)自動(dòng)執(zhí)行的代碼")
finally: # 最終要執(zhí)行的代碼,不管前面是否出現(xiàn) 異常
print("關(guān)閉文件")
if f:
f.close()
例3,異常的傳遞
f=None
try: #從本行開始捕獲異常
f = open("text.txt")
try:
content = f.read()
content.index("hello")
i = 1/0
except ValueError as ex: # 捕獲ValueError異常,未捕獲除0異常,傳遞給外層捕獲
print(ex)
except (FileNotFoundError,ZeroDivisionError) as ex: # 捕獲文件不存在和除0的異常,最外層沒有捕獲,則由python捕獲
print(ex)
else:
print("沒有異常的情況會(huì)自動(dòng)執(zhí)行的代碼")
finally: # 最終要執(zhí)行的代碼,不管前面是否出現(xiàn)異常
print("關(guān)閉文件")
if f:
f.close()
自定義異常
class PassWordException(Exception): # 自定義異常的類
def __init__(self, password, min_length):
self.password = password
self.min_length = min_length
def __str__(self):
return "%s密碼錯(cuò)誤,密碼最小長度為%s"%(self.password,self.min_length)
def reg(username,password):
if len(password)<6:
raise PassWordException(password,6) # 拋出自定義的異常
else:
print("用戶名:%s,密碼%s"%(username,password))
try:
reg("ZhangSan","123")
except FileNotFoundError as e: # 兩個(gè)except會(huì)按照順序先執(zhí)行第一個(gè),如果第一個(gè)滿足異常類型,不會(huì)執(zhí)行后面的except
print("第一個(gè)except,FileNotFoundError:%s" % e)
except PassWordException as e:
print("第二個(gè)except,PassWordException:%s" % e)
except Exception as e:
print("第三個(gè)except,Exception:%s" % e)
掃碼關(guān)注5G通信官方公眾號,免費(fèi)領(lǐng)取以下5G精品資料
1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書》
2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21》
3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國移動(dòng):6G至簡無線接入網(wǎng)白皮書》
4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國聯(lián)通5G終端白皮書》》
5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國電信5G NTN技術(shù)白皮書》
6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解》
7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國移動(dòng)算力并網(wǎng)白皮書》
8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1》