網(wǎng)站首頁 編程語言 正文
前言
在Python中,拋出自定義異常的語法為 raise 異常類對象
。也就是說可以使用 raise
語句來拋出異常, raise
語句后需要跟一個異常類或異常類的實例。
1、使用 raise?語句來拋出異常
需求:定義一個求和方法
(1)拋出異常類
def add(a, b): # 如果a和b中有負(fù)數(shù),就向調(diào)用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個異常類,或異常類的實例 # 此時返回一個異常類 raise Exception # 正常計算并返回結(jié)果 r = a + b return r print(add(-123, 456))
結(jié)果如下圖:可以看到?jīng)]有異常描述信息
(2)拋出異常類的實例
def add(a, b): # 如果a和b中有負(fù)數(shù),就向調(diào)用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個異常類,或異常類的實例 # 此時返回一個異常類的實例 raise Exception("傳入的參數(shù)不能有負(fù)數(shù)。") # 正常計算并返回結(jié)果 r = a + b return r print(add(-123, 456))
結(jié)果如下圖:
2、自定義異常類
自定義異常類,只需要創(chuàng)建一個類繼承Exception
即可。
(1)簡單實現(xiàn)
# 自定義異常類,只需要創(chuàng)建一個類繼承Exception即可 # 自定義異常類完全不用寫任何內(nèi)容 class MyError(Exception): pass def add(a, b): # 如果a和b中有負(fù)數(shù),就向調(diào)用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個異常類,或異常類的實例 # 此時返回一個異常類的實例 raise MyError("傳入的參數(shù)不能有負(fù)數(shù)。自定義的,這樣也行!") # 正常計算并返回結(jié)果 r = a + b return r print(add(-123, 456))
結(jié)果如下圖:
(2)完整實現(xiàn)
需求:密碼長度不足,則報異常(用戶輸入密碼,如果輸入的長度不足3位,則報錯,即拋出自定義異常,并捕獲該異常)。
# 自定義異常類,繼承Exception class ShortInputError(Exception): def __init__(self, length, min_len): # 用戶輸入的密碼長度 self.length = length # 系統(tǒng)要求的最少長度 self.min_len = min_len # 設(shè)置拋出異常的描述信息 def __str__(self): return f'你輸入的長度是{self.length}, 不能少于{self.min_len}個字符' def main(): # 2. 拋出異常: 嘗試執(zhí)行:用戶輸入密碼,如果長度小于3,拋出異常 try: con = input('請輸入密碼:') if len(con) < 3: # 拋出異常類創(chuàng)建的對象 raise ShortInputError(len(con), 3) # 3. 捕獲該異常 except Exception as result: print(result) else: print('密碼已經(jīng)輸入完成') main()
總結(jié)
原文鏈接:https://www.cnblogs.com/liuyuelinfighting/p/15845859.html
相關(guān)推薦
- 2022-12-23 C++中關(guān)于union的使用方法說明_C 語言
- 2023-07-16 uniapp 中 uni.navigateTo跳轉(zhuǎn)其他頁面 并且?guī)?shù)
- 2022-06-22 關(guān)于Metalama使用Fabric操作項目或命名空間的問題_實用技巧
- 2022-04-17 python讀取文件夾下所有文件
- 2022-06-27 Python數(shù)據(jù)類型和常用操作_python
- 2024-02-01 webstorm中Line comment at first column,Block commen
- 2022-08-11 python?scatter繪制散點圖_python
- 2022-06-21 C#實現(xiàn)XML文件與DataTable、Dataset互轉(zhuǎn)_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支