3. 自定義異常
4. 警告
在實際開發中,往往不會出現乙個系統編寫下來,沒有出現任何乙個bug。為處理這種會出現錯誤的地方,如除數為零的除法,python提供了非常強大的機制————異常處理機制。
python使用異常物件來表示程式異常狀態,並在遇到錯誤時引發異常。異常物件未被處理(或捕獲)是,程式將終止執行並顯示一條異常錯誤訊息(traceback)。
要引發異常,可使用raise語句,並將乙個類(必須是exception的子類)或實列作為引數。將類作為乙個引數時,將自動建立乙個例項。如:
raise attributeerror ——> 表示引發了乙個異常
raise attributeerror(
'引用屬性或給它賦值失敗!!!'
) ——> 表示引發乙個異常,並新增了錯誤訊息提示。
try
:raise exception(
'發起乙個異常'
)except exception:
print
('程式執行產生了乙個異常'
)else
:print
('什麼異常也沒發生'
)finally
:print
('不管是否發生了異常都會執行該finally語句塊'
)
try/except:最簡單的異常捕獲並處理的語句,在該語句中,except可以有多個,也可以將多個異常全部寫到乙個except語句後面。如:except (oserror,attributeerror,indexerror):pass
else:else是在程式一次執行try語句塊中沒有發生任何異常時,**才會執行else中的語句。
finally:不管程式是否發生了異常,都會執行該finally語句塊。
注意:在異常處理過程中,try/except語句可以和else、finally搭配使用,也可以不建立else和finally語句。如果要捕獲所有異常,可以在except語句後面用exception或者什麼也不寫來捕獲所有異常。但是一般建議使用exception。
在乙個函式中,如果異常沒**獲或捕獲後又重新引發,將從函式向外傳播到呼叫函式的地方。如果一直沒**獲,異常將向程式的最頂層傳播。
在**編寫中,我們通常想知道是那個物件或那個值引發了異常,方便進行程式除錯,我們可以在異常捕獲語句的except後面加上as語句。如:
try:.
...except
(exception,oserror)
as e:
print
(e)
該斷**將輸出發生異常時的物件。
在實際開發中,往往python中提供的異常滿足不了業務需求,辣麼怎麼辦呢? python中可以自定義異常來滿足那些特殊的需求,並通過視同raise語句來呼叫。辣麼如何建立自定義異常呢?異常也是乙個類,只不過屬於乙個特殊的類,但是必須直接或間接地繼承exception類。如:
class
myexception
(exception)
:def
_init__
(self,param)
:#__init__為初始化函式
print
(f' 引發了異常!!!'
)x =
1raise myexception(x) ——>
1引發了異常!!!
如果你只想用於指出了**超出了你的設想,辣麼可以傳送乙個警告,並且不影響程式的執行。可以使用warnings模組中的函式warn。如:
warn(『這是乙個警告,表示**執行超出了預想!!!』)
如果其他**在使用你的模組時,可使用warnings模組中的函式filterwarnings來抑制你發出的警告(或特定型別的警告),並指定要採取的措施,如「error」或「ignore(忽略所有)」。
warnings.filterwarnings(action,category=warning,…) ——> 用於過濾警告
warnings.warn(action, category=none) ——> 用於發出警告
Python學習筆記(七) 異常處理
異常處理部分,只是很粗略的看了一遍。著重記錄try except塊,和if else類似,不過try是異常控制的,一旦發生異常,跳過其他未執行的語句,直接執行except塊中的內容。知道捕獲多種異常的方法,分別處理不同異常的方法,捕獲所有異常的方法。finally語句 無論程式是否發生異常,fina...
Python學習筆記 七 異常處理
這篇文章將會介紹 python 中異常及其處理方法 異常是一種非正常狀態,它表示程式在執行過程中發生錯誤 在實際情況中,可能會有多種原因導致程式出現異常狀態,而每種異常狀態都會由乙個異常物件表示 當程式出現異常狀態時,會丟擲乙個異常物件,如果該物件未 獲和處理,程式將會中止 在一般情況下,程式設計師...
python學習筆記異常處理(七)
異常處理是工作中編寫 必須要完成的內容,對於不符合預期的操作,程式總會出現異常情況,而對異常情況能夠妥善處理,是保證程式穩定性的關鍵。f input filename filename hone a.py ff open f traceback most recent call last file ...