try ...except 是最常見的捕獲處理異常的結構,其主要作用是將可能出現問題的程式碼區塊用try :包裹起來,不至於出現錯誤讓程式崩潰,無法執行下去
常見的try ...excpet 的結構有三種
try: pass except BaseException as e : 异常处理模块
try 中包含著可能發生異常的程式碼,except 區塊中包含著,發生異常後,用來捕獲異常和處理異常代碼
如果在try包含的模組中發生了異常則會跳到except的模組中,去執行except中的程式碼,excpet中的模組會處理異常,如果沒有發生異常,則程式不會執行except中的程式碼。
書寫了一段用來測試會錯誤的程式碼區塊
try: test = eval(str(input("请输入一个字符串: "))) tests = test + "This is a piece of test code" except BaseException as e: print("出现的错误可能是%s"%e) print("这是一段测试输出")
錯誤提示:unsupported operand type(s) for : 'int' and 'str '
不支援:資料型別:「int」與「str」拼接( )操作
一段正確的程式碼輸入:
try: test = str(input("请输入一个字符串: ")) tests = test + " "+"This is a piece of test code" print("输入正确的内容则会执行的代码块:",tests) except BaseException as e: print("出现的错误可能是%s"%e) print("这是一段测试输出")
字是不允許和字串拼接的只有把數字轉換成字串才允許拼接。
這是一段沒有用try except:處理的有問題程式碼區塊
如果不用try...except... :對可能出現的程式碼進行包裹,程式就會崩潰,影響後續程式碼進行
test = int(input("请输入一个字符串: ")) tests = test + " "+"This is a piece of test code" print("这是一段测试输出")
多個except 語句、
如果寫入的程式碼出錯類型不太清楚,可以多寫幾個捕獲異常語句,記得在最後加上一個except BaseException 用來做兜底操作(假如出現的錯誤都不是你用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)
上述操作和下面的操作表達的功能是一致的,你也可以將所有可能出現的異常寫在一個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 中包含的程式碼區塊沒有異常,則會接著執行else 中的語句,不會去執行excpet中的程式碼區塊(這段程式碼只有在try中的程式碼塊拋出異常時,則會使用except去捕獲)
try: arr = int(input("请输入一个整数: ")) 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
明明你知道是,除零操作,為什麼不改呢?有的錯誤你明明知道什麼?故意把錯誤寫出來,難道就是為了測試錯誤嗎?
所以經過我的考慮給了大家一個好玩的
登入密碼案例的操作,如果密碼輸入正確,則會提示登入成功,錯誤的話則會繼續輸入,錯誤輸入大於三次時就會提示:"輸入錯誤次數過多密碼已鎖定“
i = 0 while True: if i == 3: print("输入错误次数过多密码已锁定") break try: Divisor = str(input("请输入一个整数: ")) # A = Divisor/1 # B = A+1 #如果输出有误就不会执行加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 ”具有實際用途的一段代碼
提示你輸入密碼,然後根據密碼的內容進行適當的加密,拼接
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("经过加密后的数据%s"%MD5)
以上是如何使用Python中的try except BaseException語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!