初識python: 異常處理

異常處理基本語法:spa

try:
    pass
except Exception,ex:
    pass

經常使用異常種類:code

AttributeError    試圖訪問一個對象,沒有的屬性。好比foo.x,可是foo沒有屬性x
IOError           輸入/輸出異常(基本上是沒法打開文件)
ImportError       沒法引入模塊或包(基本上是路徑問題或名稱錯誤)
IndentationError  語法錯誤的一種,代碼縮進不對
IndexError        下標索引超出序列邊界,好比當一個列表x只有三個元素,卻試圖訪問x[5]
KeyError          試圖訪問字典裏不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError         使用一個還沒有定義的變量
SyntaxError       Python代碼非法,代碼不能編譯
TypeError         傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是因爲另有一個同名的全局變量,致使你覺得正在訪問它
ValueError        傳入一個調用者不指望的值,即使值的類型是正確的。好比,你要將一個字符串轉換成數字:n='abc' int(n)

單個異常抓取:對象

data = {'id':123}
try:
    data['name']
except KeyError as e:
    print('沒有這個key:',e)

多個異常抓取:blog

這種方法若是第一個錯了,就不會執行後面的異常處理。
data = {'id':123}
list = [1,2]
# 只會處理 KeyError ,後面的IndexError不會處理。
try:
    data['name']
    list[3]
except KeyError as e :
    print('沒有這個key:',e)
except IndexError as e :
    print('列表操做錯誤:',e)

多個指定異常,返回同一個結果:索引

# 多個指定異常,返回同一個結果。
# 只要出現了其中任意一個就會返回。
data = {'id':123}
list = [1,2]
try:
    data['name']
    list[3]
except (IndexError,KeyError) as e:  # 出現指定的錯誤時,執行。
    print('出現了指定錯誤。')

 

萬能異常:字符串

 無論出現什麼錯誤,都能獲取。不建議一開始就是用。it

data = {'id':123}
list = [1,2]

try:
    data['name']
    list[3]
except Exception as e:  # 抓取任意異常
    print('出現了錯誤。')

 

其餘異常結構:io

 except Exception 出現非指定錯誤時,執行。編譯

 else 沒有錯誤時,執行class

 finally 無論有沒有錯,都執行。

data = {'id':123}
list = [1,2]

try:
    # data['name']
    list['abc']
    n = 1
except (IndexError,KeyError) as e:  # 出現指定的錯誤時,執行。
    print('出現了指定錯誤。')
except Exception as e:  # 出現非指定錯誤時,執行。
    print('出現了非指定錯誤!未知錯誤',e)
else:  # 沒有錯誤時,執行。
    print('一切正常,沒有錯誤。')
finally:  # 無論有沒有錯,都執行。
    print('無論有沒有錯,都執行這個!')

主動觸發異常:

try:
    raise Exception('主動觸發了異常!')
except Exception as e:
    print(e)

自定義異常:

class MyExceptin(Exception):
    def __init__(self, msg):
        self.msg = msg
        
try:
    raise MyExceptin('自定義異常!')
except MyExceptin as e:
    print(e)
相關文章
相關標籤/搜索