關於異常處理

2022-08-20 14:03:14 字數 1211 閱讀 6966

首先,異常處理非常重要。在**中,異常處理到處都是,異常處理保證了程式的正確正常執行。

異常處理的**格式:

try:

**塊  # 嘗試執行的**塊

except exception(這裡是異常型別,可以**獲,也可以自定義)as 變數:

對異常進行處理的**塊

else:

沒有出現異常,執行這裡

finally:

最後總是執行這裡(例如關閉檔案,記憶體寫入硬碟等),收尾**塊

通常用try。。。except。。。就可以了。最多加上finally

但是,python定義的異常型別再多,也趕不上我們的需要。所以,我們需要自定義異常類。

class error(exception):

pass

只要繼承exception類,就是自定義異常類。

在**中,可以i直接拋出自定義的異常。

raise error('這是自定義異常類的說明')

利用異常可以實現約束

一、在父類中,寫出方法,但是不寫任何**,而是直接丟擲 notimplementerror 異常(『沒有實現。。。方法』),這樣,如果子類沒有寫出方法實現的**,或者沒有寫同乙個方法,那麼執行時肯定丟擲這個沒有實現異常。

二、在抽象類中寫抽象方法,這種方法必須引入abc模組的abcmeta和abstractmethod,格式如下:

from abs import abcmeta,abstractmethod  # 引入模組

class father(metaclass=abcmeta):  # 定義抽象類(metaclass=abcmeta),只要類中包含了抽象方法,那麼這個類就是個抽象類,抽象類可以有普通方法,乙個只有抽象方法的類,又叫做介面。

@abstractmethod  # 抽象方法的定義語法

def play(self):   # 定義乙個抽象方法:play

pass  #  抽象方法不寫實現**

那麼,father類的子類就必須寫出play方法的具體實現**。否則子類也是乙個抽象類。

class sun(father):

def play(self):

print('這是play方法的具體實現**')

從而對子類實現了約束。

模組traceback. 這個模組可以獲取到我們每個⽅法的調⽤資訊.又被稱為堆疊資訊. 這個資訊對我們拍錯是很有幫助的.

import traceback

關於C 異常處理

1 using system 23 namespace4 11 stathread 12static void main string args 13 called.etype 20throwexception etype 21console.writeline main try block con...

關於異常處理的筆記總結

一 異常處理 1.如果由於return continue break 等語句而使控制轉移到try 塊之外,在控制轉移到try 塊外面之前,仍然執行finally 塊中的內容。2.但在try 塊或catch 塊中如果執行了system.exit 方法,則終止虛擬機器,此時不會再執行finally 塊。...

關於檔案的異常機制處理

1比較下面兩種,可以體會try.except的便利。遇到ioerror時可以跳過,並執行except ioerror 裡的內容。try fh open testfile11.txt r fh.write 這是乙個測試檔案,用於測試異常 except ioerror print error 沒有找到檔...