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

