異常處理:
捕獲異常,簡單的捕獲異常語法,在程序開發時,可以嘗試加如 try來捕獲異常
try:
嘗試執行的代碼
except:
出現錯誤的處理
try嘗試 下方填寫要嘗試的密碼,不確定能不能夠正常執行的代碼
except 如果不是,下方填寫嘗試失敗的代碼
例子:簡單的異常捕獲演練–要求用戶輸入整數
try:
#不能確定爭取執行的代碼
#提示用戶輸入一個數字
num = int(input("請輸入一個數字:"))
except:
print("請輸入一個正確的數字!")
print("-"*50)
錯誤類型捕獲:
在程序執行時,可能會遇到不同類型的,並且需要針對不同類型的異常,做出不同的響應,這個時候就需要指定錯誤類型了
try:
#嘗試執行的代碼
pass
except 錯誤類型1:
#針對錯誤類型1,對應的代碼處理
pass
except(錯誤類型2,錯誤類型3):
#針對錯誤類型2 和3 對應的代碼處理
pass
except Exception as result:
print("未知錯誤 %s" %result)
示例需求:
提示用戶輸入一個整數
使用8除以用戶輸入的整數並且輸出
while True:
try:
# 提示用戶輸入一個整數
num = int(input("輸入一個整數:"))
# 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常 賦值錯誤的第一個單詞作為關鍵字進行處理
result = 8 / num
print(result)
except ZeroDivisionError:
print("數學錯誤")
except ValueError:
print("請輸入數字")
捕獲未知錯誤:
except Exception as result:
print("未知錯誤 %s" %result)
可以把未知錯誤輸出到控制台,而不會報錯崩潰使用 Exception關鍵字
try:
# 提示用戶輸入一個整數
num = int(input("輸入一個整數:"))
# 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常 賦值錯誤的第一個單詞作為關鍵字進行處理
result = 8 / num
print(result)
except ValueError:
print("請輸入數字")
except Exception as result:
print("未知錯誤%s"%result)
異常捕獲的完整語法:
try:
#嘗試執行的代碼
pass
except 錯誤類型1的第一個關鍵字:
#針對錯誤類型1對應的代碼處理
pass
except 錯誤類型2的第一個關鍵詞:
#針對錯誤類型2的對應代碼處理
pass
except (錯誤類型3,錯誤類型4):
#針對錯誤類型3,4的對應代碼處理
pass
except Exception as result:
#打印錯誤信息
print(result)
else:
#沒異常會執行的代碼
pass
finally:
#無論是否有異常,都會執行的代碼
print("無論是否存在異常,都會執行的代碼")
示例代碼:
try:
# 提示用戶輸入一個整數
num = int(input("輸入一個整數:"))
# 輸入不是整數就報錯,輸入0也是報錯,這裡我們需要捕獲異常 賦值錯誤的第一個單詞作為關鍵字進行處理
result = 8 / num
print(result)
except ValueError:
print("請輸入數字")
except Exception as result:
print("未知錯誤%s" % result)
else:
print("嘗試成功!")
finally:
print("無論是否出現錯誤都會執行的代碼")
print("==="*20)
異常的傳遞:
當函數/方法執行出現異常時,會將異常傳遞給函數/方法的調用一方
如果傳遞到主程序,仍然沒有異常處理,程序才會被終止
所以說,只需要在主程序中做一個異常處理就可以完成代碼的異常處理
示例代碼:
def demo1():
return int(input("輸入整數:"))
def demo2():
return demo1()
#利用異常的傳遞性,在主程序捕獲異常
try:
print(demo2())
except Exception as result:
print("程序出現了%s錯誤"%(result))
拋出raise異常:
主動拋出異常
python中提供了一個 Exception 異常類
在開發時,如果滿足特定業務的需求時,希望拋出異常,可以
創建一個 Exception的對象
使用 raise關鍵字拋出異常對象
需求案例:
定義 input_password函數,提示用戶輸入密碼
如果用戶輸入長度<8,拋出異常
如果用戶輸入長度>=8 返回輸入的密碼
def input_password():
#1.提示用戶輸入密碼
result =input("請輸入密碼")
#2.判斷密碼長度 >=8 ,返回用戶輸入的密碼
if len(result) >=8:
return result
#3.如果<8 主動拋出異常
print("主動拋出異常!")
#1>創建異常對象 -可以使用錯誤信息字符串作為參數
ex =Exception("密碼長度不夠!")
#2> 主動拋出異常
raise ex
#提示用戶輸入密碼
try:
print(input_password())
except Exception as result:
print(result)
以上為python全部的全部的異常處理,還是比較簡單的!
推薦閱讀
5個節約生命的python小技巧
整理了上千個Python類庫,簡直太酷啦!
10行Python代碼能做出哪些有趣的事情?