有時(shí)候Python自定的異常不夠用或者是無(wú)法滿(mǎn)足我們的要求的時(shí)候,我們就需要自定義一個(gè)異常并且進(jìn)行拋出。
在講解如何做之前,我們首先要搞清楚Python的異常是如何劃分的。基本上就是分為兩類(lèi)
1.內(nèi)建異常,就是Python本身定義的異常
2.用戶(hù)自定義的異常
那么在開(kāi)始編寫(xiě)自定義的異常之前看看Python的異常繼承樹(shù),也就是要了解我們定義的異常是需要繼承自那個(gè)類(lèi)

可以看到所有常見(jiàn)的ImportError這些都是繼承自Exception這個(gè)類(lèi),所以我們自定義的異常也是需要繼承自這個(gè)類(lèi)
話(huà)不多說(shuō),直接給出自定義異常的定義以及拋出方式

自定義異常類(lèi)的模型
運(yùn)行輸出的結(jié)果是:

接下來(lái)以定義一個(gè)案例作為講解,這個(gè)案例要實(shí)現(xiàn)的功能是判斷用戶(hù)輸入的用戶(hù)名長(zhǎng)度是否滿(mǎn)足要求(定義長(zhǎng)度在4以?xún)?nèi))
首先還是一樣的自定義需要的異常類(lèi)型

自定義異常類(lèi)
對(duì)于它的拋出方式我們可以選擇是使用手動(dòng)拋出還是使用捕捉系統(tǒng)異常一樣的方式
1.手動(dòng)拋出

手動(dòng)拋出異常
運(yùn)行之后,可以看到結(jié)果:

輸入超過(guò)規(guī)定長(zhǎng)度的用戶(hù)名后拋出的異常
2.捕捉用戶(hù)手動(dòng)拋出的異常

捕捉自定義異常的方式
運(yùn)行之后的結(jié)果是

捕捉用戶(hù)拋出的異常結(jié)果
通過(guò)兩種方式的對(duì)比可以看到使用第二種方式會(huì)更加接近日常生活中我們所接觸到的異常拋出方式