python中的異常(try)
- 2020 年 1 月 9 日
- 筆記
1.異常 程序在運行的時候,如果python解釋器遇到一個錯誤,會停止程序的執行, 並且提示一些錯誤的信息,這就是異常 我們在程序開發的時候,很難將所有的特殊情況都處理, 通過異常捕獲可以針對 突發事件做集中處理,從而保證程序的健壯性和穩定性
在程序開發中,如果對某些代碼的執行不能確定(程序語法完全正確) 可以增加try來捕獲異常
try這個關鍵字來捕獲異常 try: 嘗試執行的代碼 except: 出現錯誤的處理
try:
不能確定正確執行的代碼
num = int(input('請輸入一個數字:'))
except: print('請輸入正確的整數')
#num = int(input('Num:')) print('' 50)
2. 需求: 1.提示用戶輸入一個整數 2.使用8來除以用戶輸入的整數
try: 嘗試執行的代碼 except 錯誤類型1: 針對錯誤類型1,對應的代碼處理 except 錯誤類型2: 針對錯誤類型2,對應的代碼處理
try: num = int(input('請輸入一個整數:')) result = 8 /num print(result) #except ZeroDivisionError: #print('0不能做除數') except ValueError: print('輸入的值不是合法的整數') except Exception as r: print('未知錯誤 %s' %(r)) #沒有預先判斷到的錯誤怎麼辦? #ZeroDivisionError finally:
無論是否有異常,都會執行的代碼
print('%%%%%%%%%%%%%%%')
#ValueError
3.異常的傳遞
def demo1(): return int(input('請輸入整數:'))
def demo2(): return demo1()
#函數的錯誤:一級一級的去找,最終會將異常傳遞到主函數里去的 #try: #print(demo2()) #except Exception as r: #print('未知錯誤 %s' %r) print(demo2())
04.主動拋出異常 需求:提示用戶輸入密碼 如果長度小於8 就拋出異常
def input_passwd(): #1.提示用戶輸入密碼 pwd = input('請輸入密碼:') #2.判斷密碼的長度 if len(pwd) >=8: return pwd #3.如果<8就主動拋出異常 print('主動拋出異常') #a.創建異常對象 ex = Exception('密碼長度不夠') #b.主動拋出 raise ex #注意:只拋出異常而不捕獲異常 代碼會出錯 try: print(input_passwd()) except Exception as re: print(re)
5.斷言
可以理解為提前預言 讓人更好的知道錯誤的原因
def func(num,div): assert (div !=0),'div不能為0' return num/div
print(func(10,0))