1. 程式人生 > >python 什麼是異常處理以及異常處理的兩種方式

python 什麼是異常處理以及異常處理的兩種方式

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