1.定義:執行時檢測到的錯誤。
2.現象:當異常發生時,程式不會再向下執行,而轉到函式的呼叫語句。
3.常見異常型別:
– 名稱異常(nameerror):變數未定義。
– 型別異常(typeerror):不同型別資料進行運算。
– 索引異常(indexerror):超出索引範圍。
– 屬性異常(attributeerror):物件沒有對應名稱的屬性。
– 鍵異常(keyerror):沒有對應名稱的鍵。
– 為實現異常(notimplementederror):尚未實現的方法。
– 異常基類exception。
1.語法:
try
: 可能觸發異常的語句
except 錯誤型別1
[as 變數1
]: 處理語句1
except 錯誤型別2
[as 變數2
]: 處理語句2
except exception [
as 變數3
]: 不是以上錯誤型別的處理語句(因為exception 可接收所有異常)
else
: 未發生異常執行的語句
finally
: 無論是否發生異常都執行的語句
2.作用:捕獲異常並嘗試處理異常使得程式能夠正常的執行。
3.說明:
as 子句是用於繫結錯誤物件的變數,可以省略
except子句可以有乙個或多個,用來捕獲某種型別的錯誤。
else子句最多只能有乙個。
finally子句最多只能有乙個,如果沒有except子句,必須存在。
4,異常的上報機制
異常通常是由呼叫者負責捕獲的,如果異常沒有**獲到,會繼續向更上層(呼叫處)繼續傳遞,直到程式因異常上報到系統程式而被系統程式終止執行。
5,raise 語句
1.作用:丟擲乙個錯誤,讓程式進入異常狀態。
2.目的:在程式呼叫層數較深時,向主調函式傳遞錯誤資訊要層層return 比較麻煩,所以人為丟擲異常,可以直接向外傳遞錯誤資訊。
6.自定義異常
1).定義:
class 類名error(exception)
:def
__init__
(self,引數)
:super()
.__init__(引數)
self.資料 = 引數
2).使用:
raise 自定義異常類名(引數)
3)捕獲自定義異常
try:….
pass
….except 自定義定義異常類 as 變數名:
pass
4).作用:封裝自定義錯誤資訊
例子:
"""
自定義異常
練習:成績異常(1-100)
"""class
ageerror
(exception)
:"""
封裝錯誤資訊
"""def__init__
(self,msg,code,age_value)
:super()
.__init__(msg)
self.msg = msg
self.code = code
self.age_value = age_value
class
wife
:def
__init__
(self,age)
: self.age = age
@property
defage
(self)
:return self.__age
@age.setter
defage(self,value):if
20<= value <=30:
self.__age = value
else
:# print("我不要")
# raise valueerror("我不要") # 人為丟擲異常
raise ageerror(
"我不要",27
,value)
try:
w01 = wife(80)
print
(w01.age)
except ageerror as e:
print
("錯誤資訊:"
,e.msg)
print
("錯誤**行號:"
,e.code)
print
("輸入的年齡是:"
,e.age_value)
7,異常在oop中的經典用途:
在某些情況下,父類中需要定義某些方法但並不實現它(因為好的oop中父類是抽象的子類是具體的),讓子類例項能夠「.」出來以明示子類例項應該具有哪些方法,父類方法中使用raise notimplementederror
來強迫子類必須重寫(點號)父類物件的這些方法。如果子類沒有重寫這些方法那麼在呼叫這些方法時就會報錯。
class
animal
:def
eat(self)
:raise notimplementederror
defsleep
(self)
:raise notimplementederror
class
dog(animal)
:pass
dog=dog(
)dog.sleep(
)#報錯!因為子類未實現sleep方法
Python 異常處理機制
python的異常處理能力是很強大的,可向使用者準確反饋出錯資訊。在python中,異常也是物件,可對它進行操作。所有異常都是基類exception的成員。所有異常都從基類exception繼承,而且都在exceptions模組中定義。python自動將所有異常名稱放在內建命名空間中,所以程式不必匯...
Python異常處理機制
部落格核心內容 1.常見的異常型別 2.異常處理機制 3.異常處理方法 4.try catch到底什麼時候用 一 python中常見的異常型別 attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x ioerror 輸入 輸出異常 基本上是無法開啟檔案 imp...
Python異常處理機制
在構建乙個魯棒性較強的python專案時,合適的異常處理機制,是相當重要的。本文主要介紹python異常處理機制的基本概念和常用的異常處理方法。在python中使用異常物件來表示異常狀態,並在遇到錯誤時引發異常。異常物件未被處理 或捕獲 時,程式將終止並顯示一條錯誤訊息 traceback 常見的內...