python中的異常(try)

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))