Python 自定義異常詳解 [Python 異常][Python 自定義異常類]

您的“關注”和“點贊”,是信任,是認可,是支持,是動力…

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

1 Python 自定義異常類

日常開發中,當系統提供的異常類型不能滿足開發的需求時,就需要自己創建一個新的異常類來擁有自己的異常。

自定義異常類繼承自 Exception 類,可以直接繼承,或者間接繼承。
對於異常類的層次結構(或叫異常類的繼承關係),請參見博文《Python 異常類的層次結構、或叫繼承關係一覽無餘》

舉例如下所示:

# 自定義異常類 MyError ,繼承普通異常基類 Exception
class MyError(Exception):
        def __init__(self, value):
            self.value = value

        def __str__(self):
            return repr(self.value)

2 Python 自定義異常:自定義異常類的使用

系統自帶的異常只要觸發會自動拋出,比如 ZeroDivisionError、NameError 等等。

但用戶自定義的異常需要用戶自己決定什麼時候拋出。可以使用 raise 語句手動拋出自定義的異常。
對於 raise 語句,請參見博文《Python raise 語句詳解》

再用 try 塊捕捉用戶手動拋出的異常,except 塊處理就 ok 了。

舉例如下所示:

# 自定義異常類 MyError ,繼承普通異常基類 Exception
class MyError(Exception):
        def __init__(self, value):
            self.value = value

        def __str__(self):
            return repr(self.value)


try:
    num = input("請輸入數字:")
    if not num.isdigit():  # 判斷輸入的是否是數字
        raise MyError(num)  # 輸入的如果不是數字,手動指定拋出異常
except MyError as e:
    print("MyError:請輸入數字。您輸入的是:", e.value)

運行結果:

請輸入數字:a
MyError:請輸入數字。您輸入的是: a

【友情鏈接】

微信公衆號:碼農阿杰

博客園

【參考資料】

Python 官網

Python 3.8.2 documentation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章