異常處理

異常種類

AttributeError 試圖訪問一個對象沒有的屬性,好比foo.x,可是foo沒有屬性x
IOError 輸入/輸出異常;基本上是沒法打開文件
ImportError 沒法引入模塊或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊
IndexError 下標索引超出序列邊界,好比當x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典裏不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個還未被賦予對象的變量
SyntaxError Python代碼非法,代碼不能編譯(我的認爲這是語法錯誤,寫錯了)
TypeError 傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是因爲另有一個同名的全局變量,
致使你覺得正在訪問它
ValueError 傳入一個調用者不指望的值,即便值的類型是正確的
異常處理
一、指定類型的異常
s1 = 'hello'
try:
    int(s1)
except IndexError as e: # 未捕獲到異常,程序直接報錯
    print e
二、多分支
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
三、萬能異常Exception
s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)
四、使用finally,將必須執行的內容放到這裏,例如關閉文件等。
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)
else:
    print('try內代碼塊沒有異常則執行我')
finally:
    print('不管異常與否,都會執行該模塊,一般是進行清理工做')

五、主動觸發異常
try:
    raise TypeError('類型錯誤')
except Exception as e:
    print(e)
六、自定義異常
把異常當成函數寫
七、斷言:assert 條件
若是與assert內容不符,則終止執行
def add():
res=1
return 1
test=add()
assert test == 2
相關文章
相關標籤/搜索