Python高階 四 Python中的異常

2021-10-07 13:28:34 字數 3275 閱讀 1837

異常機制是指程式出現錯誤後,程式的處理方法

當出現錯誤後,程式的執行流程發生改變,程式的控制權轉移到異常處理exception類是常用的異常類,該類包括standarderrorstopiteration,generatorexit,warning等異常類。

standarderror類是python中的錯誤異常,如果程式上出現邏輯錯誤, 將引發該異常。standarderror類是所有內斂異常的基類,放置在預設的命名空間中,因此使用ioerror,eoferror,importerror等類,不需要匯入exception模組。

stopiteration類判斷迴圈是否執行到尾部,如果迴圈到尾部,則丟擲該異常。

generatorexit類是由generator函式引發的異常,當呼叫close()時引發該異常。

warning類表示程式中的**引起的警告。

python允許程式設計師自定義異常,用於描述python中沒有涉及的異常情況,自定義異常必須繼承exception類,自定義異常按照命名規範。

class

divisionexception

(exception)

:def

__init__

(self, x, y)

: exception.__init__(self, x, y)

#呼叫子類的__init__進行初始化

self.x = x

self.y = y

if __name__ ==

"__main__"

:try

: x =

3 y =

2if x % y >0:

#如果大於0, 則不能被初始化,丟擲異常

print

(x / y)

raise divisionexception(x, y)

except divisionexception:

#div 表示divisionexception的例項物件

print

("divisionexcetion: x/y"

)

當程式出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行。

try

: s =

none

if s is

none

:print

"s 是空物件"

raise nameerror #如果引發nameerror異常,後面的**將不能執行

print

len(s)

except typeerror:

print

"空物件沒有長度"

try...except用於處理問題語句,捕獲可能出現的異常。try子句中的**塊放置可能出現異常的語句,except子句中的**塊處理異常。語法如下:

try

:# 嘗試執行的**

pass

except 錯誤型別1:

pass

except

(錯誤型別2, 錯誤型別3

): pass

except exception as result:

# 捕獲未知異常

print

("未知錯誤 %s"

% result)

演示try...except語句捕獲ioerror異常:

try:

file

("hello.txt"

,"r"

)#如果檔案不存在,引發異常

print

"讀檔案"

except ioerror:

#捕獲io異常

print

"檔案不存在"

except: #其它異常

print

"程式異常"

try...finally的使用方法。try...except後還可以新增乙個finally子句。無論異常是否發生,finally子句都會被執行。

try

: f =

open

("hello.txt"

,"r"

)try

:print f.read(5)

except

:print

"讀檔案異常"

finally

:print

"釋放資源"

f.close(

)except ioerror:

print

"檔案不存在"

當函式/方法執行出現異常,會將異常傳遞給函式/方法的呼叫一方。如果傳遞到主程式,仍然沒有異常處理,程式才會被終止。

def

demo1()

: num =

int(

input

("please input integer"))

return num

defdemo2()

:return demo1(

)try

: demo2(

)except exception as result:

print

("the error is: {}"

.format

(result)

)

assert語句用於檢測某個條件表示式是否為真。assert語句又稱為斷言語句。

Python高階(四) 讀寫檔案

輸入輸出內容 向程式輸入內容使用input hint 函式 標準螢幕輸出內容用print content 函式 expression input please input an expression result eval expression print result 開啟檔案 open path...

python高階 四 魔術方法

魔術方法 在python中,以雙下劃線開頭 雙下劃線結尾的方法我們稱之為魔術方法。例如 init 魔術方法是python內部定義好的,我們不需要去建立。1.new 方法和單例模式 new 方法 create and return a new object.建立物件時觸發class hero obje...

python高階第四天

屬性描述符是實現了特定協議的類,只要實現了 get set 和 delete 三個方法中的任意乙個,這個類就是描述符,它能實現對多個屬性運用相同訪問邏輯的一種方式,通俗來說就是 建立乙個例項,作為另乙個類的類屬性。除了使用類當作乙個屬性描述符,我們之前學習的 property 就是可以輕鬆地為任意屬...