1.異常的定義
異常是錯誤發生的訊號,程式一旦出錯就會丟擲錯誤資訊,如果不及時處理就會程式就會隨之停止執行
異常有三部分組成:
1)異常型別
2)異常追蹤
3)異常的值
2.異常的分類
1)語法錯誤
無法通過python直譯器解釋的語法
2)邏輯錯誤
3.異常的種類
attributeerror 訪問乙個物件不存在的屬性1.語法ioerror 輸入/輸出異常,例如無法開啟檔案
importerror 無法引入模組或包,通常是路徑問題或名稱錯誤
indentationerror 語法錯誤(的子類),**縮排錯誤
indexerror 下標索引超出序列邊界
keyerror 試圖訪問字典裡不存在的鍵
keyboardinterrupt ctrl+c被按下
nameerror 使用乙個還未被賦予物件的變數
syntaxerror python**非法,**不能編譯,例如語法錯誤
typeerror 傳入物件型別與要求的不符合
unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,
導致你以為正在訪問它
valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的
try1)單分支:
#**塊
except
(錯誤型別1, ...):
#**塊
try2)多分支:
print('
start...')
s = 1y
l =l[2]
print('
end...')
except
nameerror:
print('
變數名沒有賦值')
#輸出結果
start...
變數名沒有賦值
try3)多種異常處理同一段邏輯處理:
print('
start...')
s = 1
#y l=
l[2]
print('
end...')
except
nameerror:
print('
變數名沒有賦值')
except
indexerror:
print('
索引不存在')
#輸出結果
start...
索引不存在
try4)萬能異常:
print('
start...')
s = 1
#y l=
l[2]
print('
end...')
except
(nameerror,indexerror):
print('
一行匹配多個錯誤
')
try5)獲取異常值:
print('
start...')
s = 1
#y l=
l[2]
print('
end...')
except
exception as e:
print('
萬能異常匹配')
else
:
print('
不存在異常的時候才被執行')
finally
:
print('
有無異常都被執行
')
6)try...else...(else必須與except組合使用)
else只有在被監測的**不存在異常時才會被執行
7)try...finally...
finally無論被監測的**是否存在異常時都會被執行
#2.主動觸發異常finally的子**塊中通常放**系統資源的**
try:
f=open('
f.txt
','w
',encoding='
utf-8')
f.readline()
except
exception as e:
(e)finally
: f.close()
raise 異常型別('.....')
3.斷言
assret 條件
4.自定義異常處理
class5.異常處理使用的場景registererror(baseexception):
def__init__
(self,user,msg):
self.msg =msg
self.user =user
def__str__
(self):
return
'' %(self.user,self.msg)
raise registererror('
zhang
','登入失敗
')
為確保程式的可讀性,應盡量少用
python高階(異常處理)
python程式一旦發生錯誤,就從錯誤的位置停下來了,不會執行後面的內容。a 未定義的變數,nameerror print 我不會執行 該 不會執行 except nameerror try語句 異常 且 錯誤符合時執行 print 語法錯誤 else print try裡面 沒有錯誤時執行。pri...
Python高階 異常處理
就是不正常的情況,程式開發過程中錯誤和bug都是補充正常的情況 引發程式崩潰 try except 異常捕獲處理 try 1 可能發生異常的 except 2 發現異常後,立刻進入except,執行 2 else 3 程式正常執行進入這一行執行 finally 4 出現finally程式必定執行次行...
Python高階 異常處理
try except從句。將可能觸發異常產生的 放到try模組裡,而處理異常的 會在except語句塊裡實現。如 try file open test.txt rb except ioerror as e print an ioerror occured.format e.args 1 輸出 an ...