Python中try excpet BaseException(異常處理捕獲)的使用
try ...except 是最常見的捕獲處理異常的結(jié)構(gòu),其主要作用是將可能出現(xiàn)問題的代碼塊用try :包裹起來,不至于出現(xiàn)錯(cuò)誤讓程序崩潰,無法執(zhí)行下去
常見的try ...excpet 的結(jié)構(gòu)有三種
try:
pass
except BaseException as e :
異常處理模塊try 中包含著可能發(fā)生異常的程序代碼,except 塊中包含著,發(fā)生異常后,用來捕獲異常和處理異常代碼
如果在try包含的模塊中發(fā)生了異常則會(huì)跳轉(zhuǎn)到 except的模塊中,去執(zhí)行 except中的代碼,excpet中的模塊會(huì)處理異常,如果沒有發(fā)生異常,則程序不會(huì)執(zhí)行except中的代碼。
書寫了一段用于測試會(huì)報(bào)錯(cuò)的代碼塊
try:
test = eval(str(input("請輸入一個(gè)字符串: ")))
tests = test + "This is a piece of test code"
except BaseException as e:
print("出現(xiàn)的錯(cuò)誤可能是%s"%e)
print("這是一段測試輸出")
錯(cuò)誤提示: unsupported operand type(s) for +: 'int' and 'str'
不支持 :數(shù)據(jù)類型:“int”和“str”拼接(+)操作
一段正確的代碼輸入:
try:
test = str(input("請輸入一個(gè)字符串: "))
tests = test + " "+"This is a piece of test code"
print("輸入正確的內(nèi)容則會(huì)執(zhí)行的代碼塊:",tests)
except BaseException as e:
print("出現(xiàn)的錯(cuò)誤可能是%s"%e)
print("這是一段測試輸出")
字是不允許和字符串拼接的只有把數(shù)字轉(zhuǎn)換成字符串才允許拼接。
這是一段沒有用try except:處理的有問題代碼塊
如果不用try...except... :對(duì)可能出現(xiàn)的代碼進(jìn)行包裹,程序就會(huì)崩潰,影響后續(xù)代碼進(jìn)行
test = int(input("請輸入一個(gè)字符串: "))
tests = test + " "+"This is a piece of test code"
print("這是一段測試輸出")
多個(gè)except 語句、
如果寫入的代碼出錯(cuò)類型不太清楚,可以多寫幾個(gè)捕獲異常語句,記得在最后加上一個(gè)except BaseException 用來做兜底操作(假如出現(xiàn)的錯(cuò)誤都不是你用except 捕獲的異常你可以用它來兜底),它是所有異常的父類包含了所有常見的異常
arr = {
"xiaomi":"123",
"xiaozhang":"456",
"xiaodede":"7,8,9"
}
arrs = (1,2,3,4,5)
try:
3 / 0
print(arrs[6])
except IndexError :
print('導(dǎo)入包失敗')
except KeyError :
print('在字典中找不到指定的鍵')
except ImportError :
print("索引時(shí)沒有找到指定序列")
#兜底捕獲錯(cuò)誤,BaseException 是所有錯(cuò)誤的父類可以說是包含了所有常見的錯(cuò)誤
except BaseException as e:
print(arr["mayuanyuan"])
print(e)上述操作和下面的操作表達(dá)的功能是一致的,你也可以將所有可能出現(xiàn)的異常寫在一個(gè) except 中,異常和異常之間 用逗號(hào)隔開
arr = (1,2,3,4,5)
try:
int("3.1415926")
print(add) # 未定義
print(arr[6]) #超出索引
except (IndexError,NameError,ValueError)as e:
print(e)3 try... except... esle
如果try 中包含的代碼塊沒有異常,則會(huì)接著執(zhí)行else 中的語句,不會(huì)去執(zhí)行 excpet中的代碼塊(這段代碼只有try中的代碼塊拋出異常時(shí),則會(huì)使用except去捕獲)
try:
arr = int(input("請輸入一個(gè)整數(shù): "))
except BaseException as e:
print(e)
else:
arrs = arr + 111
print(arrs)
print("測試結(jié)束")
異常處理模塊就講到到這里了,我要談到關(guān)于異常處理模塊try except實(shí)際用途,有的博主會(huì)談一些簡單的案例,可能有的同學(xué)對(duì)這個(gè)模塊認(rèn)識(shí)的并不是很深入,為什么呢?
try:
4 /0
except BaseException as e:
print(e)
報(bào)錯(cuò): division by zero明明你知道是,除零操作,你為什么不改呢?有的錯(cuò)誤你明明知道什么?故意把錯(cuò)誤寫出來,難道就是為了測試錯(cuò)誤嗎?
所以經(jīng)過我的考慮給了大家一個(gè)好玩的
登錄密碼案例的操作,如果密碼輸入正確,則會(huì)提示登錄成功,錯(cuò)誤的話則會(huì)繼續(xù)輸入,錯(cuò)誤輸入大于三次時(shí)就會(huì)提示:"輸入錯(cuò)誤次數(shù)過多密碼已鎖定“
i = 0
while True:
if i == 3:
print("輸入錯(cuò)誤次數(shù)過多密碼已鎖定")
break
try:
Divisor = str(input("請輸入一個(gè)整數(shù): "))
# A = Divisor/1
# B = A+1 #如果輸出有誤就不會(huì)執(zhí)行加1操作直接跳到 except當(dāng)中
# print("結(jié)果是:",B)
mima = 'ma123'
if Divisor == mima:
i = i+1
print("登錄成功,輸入%s次"%i)
break
except:
i = i+1
print("密碼輸入錯(cuò)誤請重新輸入:")
print("登陸了%s次"%i)這是關(guān)于“try... except... esle ”具有實(shí)際用途的一段代碼
提示你輸入密碼,然后根據(jù)密碼的內(nèi)容進(jìn)行適當(dāng)?shù)募用埽唇?/p>
md5 = []
try:
Divisor = str(input("請輸入你的密碼: "))
except:
print("密碼輸入錯(cuò)誤")
else:
for i in Divisor:
if i == 1:
i = "a"
else:
i == 2
i = "b"
md5.append(i)
MD5 = Divisor + md5[0]
print("經(jīng)過加密后的數(shù)據(jù)%s"%MD5)到此這篇關(guān)于Python中try excpet BaseException(異常處理捕獲)的使用的文章就介紹到這了,更多相關(guān)Python 異常處理捕獲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實(shí)現(xiàn)橋接模式的代碼詳解
橋接模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它將抽象部分與其實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化,本文將給大家介紹如何使用Python實(shí)現(xiàn)橋接模式,需要的朋友可以參考下2024-02-02
學(xué)習(xí)python之編寫簡單乘法口訣表實(shí)現(xiàn)代碼
這篇文章主要介紹了學(xué)習(xí)python之編寫簡單乘法口訣表實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-02-02
學(xué)習(xí)python如何處理需要登錄的網(wǎng)站步驟
這篇文章主要為大家介紹了python如何處理需要登錄的網(wǎng)站步驟學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
在Linux下使用Python的matplotlib繪制數(shù)據(jù)圖的教程
這篇文章主要介紹了在Linux下使用Python的matplotlib繪制數(shù)據(jù)圖的教程,matplotlib基于Numpy進(jìn)行科學(xué)計(jì)算上的延伸,需要的朋友可以參考下2015-06-06

