您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python中的try excpet BaseException怎么使用”,在日常操作中,相信很多人在Python中的try excpet BaseException怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python中的try excpet BaseException怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
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ā)生了異常則會跳轉(zhuǎn)到 except的模塊中,去執(zhí)行 except中的代碼,excpet中的模塊會處理異常,如果沒有發(fā)生異常,則程序不會執(zhí)行except中的代碼。
書寫了一段用于測試會報(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)容則會執(zhí)行的代碼塊:",tests) except BaseException as e: print("出現(xiàn)的錯(cuò)誤可能是%s"%e) print("這是一段測試輸出")
字是不允許和字符串拼接的只有把數(shù)字轉(zhuǎn)換成字符串才允許拼接。
這是一段沒有用try except:處理的有問題代碼塊
如果不用try...except... :對可能出現(xiàn)的代碼進(jìn)行包裹,程序就會崩潰,影響后續(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 中,異常和異常之間 用逗號隔開
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中的代碼塊拋出異常時(shí),則會使用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í)際用途,有的博主會談一些簡單的案例,可能有的同學(xué)對這個(gè)模塊認(rèn)識的并不是很深入,為什么呢?
try: 4 /0 except BaseException as e: print(e) 報(bào)錯(cuò): division by zero
明明你知道是,除零操作,你為什么不改呢?有的錯(cuò)誤你明明知道什么?故意把錯(cuò)誤寫出來,難道就是為了測試錯(cuò)誤嗎?
所以經(jīng)過我的考慮給了大家一個(gè)好玩的
登錄密碼案例的操作,如果密碼輸入正確,則會提示登錄成功,錯(cuò)誤的話則會繼續(xù)輸入,錯(cuò)誤輸入大于三次時(shí)就會提示:"輸入錯(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 #如果輸出有誤就不會執(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怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。