Python中try excpet BaseException(異常處理捕獲)的使用
try ...except 是最常見(jiàn)的捕獲處理異常的結(jié)構(gòu),其主要作用是將可能出現(xiàn)問(wèn)題的代碼塊用try :包裹起來(lái),不至于出現(xiàn)錯(cuò)誤讓程序崩潰,無(wú)法執(zhí)行下去
常見(jiàn)的try ...excpet 的結(jié)構(gòu)有三種
try:
pass
except BaseException as e :
異常處理模塊try 中包含著可能發(fā)生異常的程序代碼,except 塊中包含著,發(fā)生異常后,用來(lái)捕獲異常和處理異常代碼
如果在try包含的模塊中發(fā)生了異常則會(huì)跳轉(zhuǎn)到 except的模塊中,去執(zhí)行 except中的代碼,excpet中的模塊會(huì)處理異常,如果沒(méi)有發(fā)生異常,則程序不會(huì)執(zhí)行except中的代碼。
書(shū)寫(xiě)了一段用于測(cè)試會(huì)報(bào)錯(cuò)的代碼塊
try:
test = eval(str(input("請(qǐng)輸入一個(gè)字符串: ")))
tests = test + "This is a piece of test code"
except BaseException as e:
print("出現(xiàn)的錯(cuò)誤可能是%s"%e)
print("這是一段測(cè)試輸出")
錯(cuò)誤提示: unsupported operand type(s) for +: 'int' and 'str'
不支持 :數(shù)據(jù)類型:“int”和“str”拼接(+)操作
一段正確的代碼輸入:
try:
test = str(input("請(qǐng)輸入一個(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("這是一段測(cè)試輸出")
字是不允許和字符串拼接的只有把數(shù)字轉(zhuǎn)換成字符串才允許拼接。
這是一段沒(méi)有用try except:處理的有問(wèn)題代碼塊
如果不用try...except... :對(duì)可能出現(xiàn)的代碼進(jìn)行包裹,程序就會(huì)崩潰,影響后續(xù)代碼進(jìn)行
test = int(input("請(qǐng)輸入一個(gè)字符串: "))
tests = test + " "+"This is a piece of test code"
print("這是一段測(cè)試輸出")
多個(gè)except 語(yǔ)句、
如果寫(xiě)入的代碼出錯(cuò)類型不太清楚,可以多寫(xiě)幾個(gè)捕獲異常語(yǔ)句,記得在最后加上一個(gè)except BaseException 用來(lái)做兜底操作(假如出現(xiàn)的錯(cuò)誤都不是你用except 捕獲的異常你可以用它來(lái)兜底),它是所有異常的父類包含了所有常見(jiàn)的異常
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í)沒(méi)有找到指定序列")
#兜底捕獲錯(cuò)誤,BaseException 是所有錯(cuò)誤的父類可以說(shuō)是包含了所有常見(jiàn)的錯(cuò)誤
except BaseException as e:
print(arr["mayuanyuan"])
print(e)上述操作和下面的操作表達(dá)的功能是一致的,你也可以將所有可能出現(xiàn)的異常寫(xiě)在一個(gè) except 中,異常和異常之間 用逗號(hào)隔開(kāi)
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 中包含的代碼塊沒(méi)有異常,則會(huì)接著執(zhí)行else 中的語(yǔ)句,不會(huì)去執(zhí)行 excpet中的代碼塊(這段代碼只有try中的代碼塊拋出異常時(shí),則會(huì)使用except去捕獲)
try:
arr = int(input("請(qǐng)輸入一個(gè)整數(shù): "))
except BaseException as e:
print(e)
else:
arrs = arr + 111
print(arrs)
print("測(cè)試結(jié)束")
異常處理模塊就講到到這里了,我要談到關(guān)于異常處理模塊try except實(shí)際用途,有的博主會(huì)談一些簡(jiǎn)單的案例,可能有的同學(xué)對(duì)這個(gè)模塊認(rèn)識(shí)的并不是很深入,為什么呢?
try:
4 /0
except BaseException as e:
print(e)
報(bào)錯(cuò): division by zero明明你知道是,除零操作,你為什么不改呢?有的錯(cuò)誤你明明知道什么?故意把錯(cuò)誤寫(xiě)出來(lái),難道就是為了測(cè)試錯(cuò)誤嗎?
所以經(jīng)過(guò)我的考慮給了大家一個(gè)好玩的
登錄密碼案例的操作,如果密碼輸入正確,則會(huì)提示登錄成功,錯(cuò)誤的話則會(huì)繼續(xù)輸入,錯(cuò)誤輸入大于三次時(shí)就會(huì)提示:"輸入錯(cuò)誤次數(shù)過(guò)多密碼已鎖定“
i = 0
while True:
if i == 3:
print("輸入錯(cuò)誤次數(shù)過(guò)多密碼已鎖定")
break
try:
Divisor = str(input("請(qǐng)輸入一個(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ò)誤請(qǐng)重新輸入:")
print("登陸了%s次"%i)這是關(guān)于“try... except... esle ”具有實(shí)際用途的一段代碼
提示你輸入密碼,然后根據(jù)密碼的內(nèi)容進(jìn)行適當(dāng)?shù)募用?,拼?/p>
md5 = []
try:
Divisor = str(input("請(qǐng)輸入你的密碼: "))
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)過(guò)加密后的數(shù)據(jù)%s"%MD5)到此這篇關(guān)于Python中try excpet BaseException(異常處理捕獲)的使用的文章就介紹到這了,更多相關(guān)Python 異常處理捕獲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python cv2在驗(yàn)證碼識(shí)別中應(yīng)用實(shí)例解析
這篇文章主要介紹了python cv2在驗(yàn)證碼識(shí)別中應(yīng)用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python?pyasn庫(kù)解析和生成ASN.1數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了Python?pyasn庫(kù)實(shí)現(xiàn)ASN.1數(shù)據(jù)結(jié)構(gòu)的解析和生成實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Pandas DataFrame中實(shí)現(xiàn)取單個(gè)值的讀取和修改
這篇文章主要介紹了Pandas DataFrame中實(shí)現(xiàn)取單個(gè)值的讀取和修改,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
使用Python實(shí)現(xiàn)優(yōu)雅生成假數(shù)據(jù)
Faker是一個(gè)Python包,開(kāi)源的GITHUB項(xiàng)目,主要用來(lái)創(chuàng)建偽數(shù)據(jù),這篇文章主要為大家詳細(xì)介紹了Python如何使用Faker生成假數(shù)據(jù),感興趣的小伙伴可以了解下2023-12-12
python常見(jiàn)運(yùn)算符及用法小結(jié)
python中的運(yùn)算符主要包括算術(shù)運(yùn)算符,關(guān)系(比較)運(yùn)算符,賦值運(yùn)算符,邏輯運(yùn)算符,成員運(yùn)算符,身份運(yùn)算符,三目運(yùn)算符。使用運(yùn)算符將不同類型的數(shù)據(jù)按照一定的規(guī)則連接起來(lái)的式子,稱為表達(dá)式。下面將介紹一些常用的運(yùn)算符2022-08-08
python調(diào)用golang中函數(shù)方法
由于simhash方法有多種實(shí)現(xiàn)方式,現(xiàn)python中simhash方法與golang中的不一樣,需要兩者代碼生成結(jié)果保持一致,故采用python中的代碼調(diào)用golang編譯的so文件來(lái)實(shí)現(xiàn),需要的朋友可以參考下2024-02-02
python用tkinter實(shí)現(xiàn)一個(gè)gui的翻譯工具
這篇文章主要介紹了python用tkinter實(shí)現(xiàn)一個(gè)gui的翻譯工具,幫助大家更好的理解和使用python,感興趣的朋友可以了解下 +2020-10-10
Python?pandas刪除指定行/列數(shù)據(jù)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Python?pandas刪除指定行/列數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01

