您的“關注”和“點贊”,是信任,是認可,是支持,是動力…
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
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