Python的異常處理機制和常見異常型別

2021-09-27 06:39:08 字數 2991 閱讀 3379

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 常見的內...