Python自定義異常類及用法

2020-07-16 10:05:07
前面的例子裡充斥了很多 Python 內建的異常型別,讀者也許會問,我可以建立自己的異常型別嗎?

答案是肯定的,Python 允許使用者自定義異常型別。實際開發中,有時候系統提供的異常型別不能滿足開發的需求。這時就可以建立一個新的異常類來擁有自己的異常。

其實,在前面章節中,已經涉及到了異常類的建立,例如:
class SelfExceptionError(Exception):
    pass
try:
    raise SelfExceptionError()
except SelfExceptionError as err:
    print("捕捉到自定義異常")
執行結果為:

捕捉到自定義異常

可以看到,此程式中就自定義了一個名為 SelfExceptionError 的異常類,只不過該類是一個空類。

由於大多數 Python 內建異常的名字都以 "Error" 結尾,所以實際命名時盡量跟標準的異常命名一樣。

需要注意的是,自定義一個異常類,通常應繼承自 Exception 類(直接繼承),當然也可以繼承自那些本身就是從 Exception 繼承而來的類(間接繼承 Exception)。

Python異常類繼承圖
圖 1 Python 異常類繼承圖