python 什麼是異常處理以及異常處理的兩種方式
阿新 • • 發佈:2018-12-10
# AttributeError 試圖訪問一個物件沒有的樹形,比如foo.x,但是foo沒有屬性x # IOError 輸入/輸出異常;基本上是無法開啟檔案 # ImportError 無法引入模組或包;基本上是路徑問題或名稱錯誤 # IndentationError 語法錯誤(的子類) ;程式碼沒有正確對齊 # IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5] # KeyError 試圖訪問字典裡不存在的鍵 # KeyboardInterrupt Ctrl+C 被按下 # NameError 使用一個還未被賦予物件的變數 # SyntaxError Python程式碼非法,程式碼不能編譯(個人認為這是語法錯誤,寫錯了) # TypeError 傳入物件型別與要求的不符合 # UnboundLocalError 試圖訪問一個還未被設定的區域性變數,基本上是由於另有一個同名的全域性變數, # 導致你以為正在訪問它 # ValueError 傳入一個呼叫者不期望的值,即使值的型別是正確的 # 為什麼需要異常處理 : # 為了保證程式的健壯性與容錯性,即在遇到錯誤時程式不會崩潰,我們需要對異常進行處理 # 錯誤 : 語法錯誤 和邏輯錯誤 #使用if 判斷式 age=input(">>>:") if age.isdigit(): int(age) elif age.isspace(): print("---> 使用者輸入的空格") elif len(age)==0: print('--->使用者輸入的為空') else : print('其他非法輸入') # if 判斷雖然可以做異常處理 但是必須為相同程式碼 寫重複的操作 可讀性變得極其的底 #python 為每一種異常定製一個型別,然後提供了一種特定的語法結構用來進行異常處理 # 如果錯誤發生的條件是不可預知的,則需要用到try...except:在錯誤發生之後進行處理 # #基本語法為 # try: # 被檢測的程式碼塊 # except 異常型別: # try中一旦檢測到異常,就執行這個位置的邏輯 # 舉例 如下 : try : age = input(">>>") int(age) # 主邏輯 num2 = input(">>:") int(num2) # 主邏輯 except ValueError as e : print(e)