Python實(shí)現(xiàn)自定義異常實(shí)例
前言
在Python中,拋出自定義異常的語(yǔ)法為 raise 異常類對(duì)象
。也就是說(shuō)可以使用 raise
語(yǔ)句來(lái)拋出異常, raise
語(yǔ)句后需要跟一個(gè)異常類或異常類的實(shí)例。
1、使用 raise 語(yǔ)句來(lái)拋出異常
需求:定義一個(gè)求和方法
(1)拋出異常類
def add(a, b): # 如果a和b中有負(fù)數(shù),就向調(diào)用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個(gè)異常類,或異常類的實(shí)例 # 此時(shí)返回一個(gè)異常類 raise Exception # 正常計(jì)算并返回結(jié)果 r = a + b return r print(add(-123, 456))
結(jié)果如下圖:可以看到?jīng)]有異常描述信息
(2)拋出異常類的實(shí)例
def add(a, b): # 如果a和b中有負(fù)數(shù),就向調(diào)用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個(gè)異常類,或異常類的實(shí)例 # 此時(shí)返回一個(gè)異常類的實(shí)例 raise Exception("傳入的參數(shù)不能有負(fù)數(shù)。") # 正常計(jì)算并返回結(jié)果 r = a + b return r print(add(-123, 456))
結(jié)果如下圖:
2、自定義異常類
自定義異常類,只需要?jiǎng)?chuàng)建一個(gè)類繼承Exception
即可。
(1)簡(jiǎn)單實(shí)現(xiàn)
# 自定義異常類,只需要?jiǎng)?chuàng)建一個(gè)類繼承Exception即可 # 自定義異常類完全不用寫任何內(nèi)容 class MyError(Exception): pass def add(a, b): # 如果a和b中有負(fù)數(shù),就向調(diào)用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個(gè)異常類,或異常類的實(shí)例 # 此時(shí)返回一個(gè)異常類的實(shí)例 raise MyError("傳入的參數(shù)不能有負(fù)數(shù)。自定義的,這樣也行!") # 正常計(jì)算并返回結(jié)果 r = a + b return r print(add(-123, 456))
結(jié)果如下圖:
(2)完整實(shí)現(xiàn)
需求:密碼長(zhǎng)度不足,則報(bào)異常(用戶輸入密碼,如果輸入的長(zhǎng)度不足3位,則報(bào)錯(cuò),即拋出自定義異常,并捕獲該異常)。
# 自定義異常類,繼承Exception class ShortInputError(Exception): def __init__(self, length, min_len): # 用戶輸入的密碼長(zhǎng)度 self.length = length # 系統(tǒng)要求的最少長(zhǎng)度 self.min_len = min_len # 設(shè)置拋出異常的描述信息 def __str__(self): return f'你輸入的長(zhǎng)度是{self.length}, 不能少于{self.min_len}個(gè)字符' def main(): # 2. 拋出異常: 嘗試執(zhí)行:用戶輸入密碼,如果長(zhǎng)度小于3,拋出異常 try: con = input('請(qǐng)輸入密碼:') if len(con) < 3: # 拋出異常類創(chuàng)建的對(duì)象 raise ShortInputError(len(con), 3) # 3. 捕獲該異常 except Exception as result: print(result) else: print('密碼已經(jīng)輸入完成') main()
總結(jié)
到此這篇關(guān)于Python實(shí)現(xiàn)自定義異常實(shí)例的文章就介紹到這了,更多相關(guān)Python自定義異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 調(diào)用 C++ 傳遞numpy 數(shù)據(jù)詳情
這篇文章主要介紹了Python 調(diào)用 C++ 傳遞numpy 數(shù)據(jù)詳情,文章主要分為兩部分,c++代碼和python代碼,代碼分享詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-03-03python 調(diào)用win32pai 操作cmd的方法
下面小編就為大家?guī)?lái)一篇python 調(diào)用win32pai 操作cmd的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-05-05python實(shí)現(xiàn)文本進(jìn)度條 程序進(jìn)度條 加載進(jìn)度條 單行刷新功能
這篇文章主要介紹了python實(shí)現(xiàn)文本進(jìn)度條 程序進(jìn)度條 加載進(jìn)度條 單行刷新功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07PyQt中實(shí)現(xiàn)自定義工具提示ToolTip的方法詳解
這篇文章主要為大家詳細(xì)介紹了PyQt中實(shí)現(xiàn)自定義工具提示ToolTip的方法詳解,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下2022-05-05python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn)
本文主要介紹了python數(shù)據(jù)清洗中的時(shí)間格式化實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05pycharm遠(yuǎn)程連接服務(wù)器調(diào)試tensorflow無(wú)法加載問題
最近打算在win系統(tǒng)下使用pycharm開發(fā)程序,并遠(yuǎn)程連接服務(wù)器調(diào)試程序,其中在import tensorflow時(shí)報(bào)錯(cuò),本文就來(lái)介紹一下如何解決,感興趣的可以了解一下2021-06-06Python http接口自動(dòng)化測(cè)試框架實(shí)現(xiàn)方法示例
這篇文章主要介紹了Python http接口自動(dòng)化測(cè)試框架實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python針對(duì)http接口測(cè)試的相關(guān)實(shí)現(xiàn)與使用操作技巧,需要的朋友可以參考下2018-12-12