網站首頁 編程語言 正文
前言
在Python中,拋出自定義異常的語法為 raise 異常類對象
。也就是說可以使用 raise
語句來拋出異常, raise
語句后需要跟一個異常類或異常類的實例。
1、使用 raise?語句來拋出異常
需求:定義一個求和方法
(1)拋出異常類
def add(a, b): # 如果a和b中有負數,就向調用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個異常類,或異常類的實例 # 此時返回一個異常類 raise Exception # 正常計算并返回結果 r = a + b return r print(add(-123, 456))
結果如下圖:可以看到沒有異常描述信息
(2)拋出異常類的實例
def add(a, b): # 如果a和b中有負數,就向調用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個異常類,或異常類的實例 # 此時返回一個異常類的實例 raise Exception("傳入的參數不能有負數。") # 正常計算并返回結果 r = a + b return r print(add(-123, 456))
結果如下圖:
2、自定義異常類
自定義異常類,只需要創建一個類繼承Exception
即可。
(1)簡單實現
# 自定義異常類,只需要創建一個類繼承Exception即可 # 自定義異常類完全不用寫任何內容 class MyError(Exception): pass def add(a, b): # 如果a和b中有負數,就向調用處拋出異常 if a < 0 or b < 0: # raise用于向外部拋出異常,后邊可以跟一個異常類,或異常類的實例 # 此時返回一個異常類的實例 raise MyError("傳入的參數不能有負數。自定義的,這樣也行!") # 正常計算并返回結果 r = a + b return r print(add(-123, 456))
結果如下圖:
(2)完整實現
需求:密碼長度不足,則報異常(用戶輸入密碼,如果輸入的長度不足3位,則報錯,即拋出自定義異常,并捕獲該異常)。
# 自定義異常類,繼承Exception class ShortInputError(Exception): def __init__(self, length, min_len): # 用戶輸入的密碼長度 self.length = length # 系統要求的最少長度 self.min_len = min_len # 設置拋出異常的描述信息 def __str__(self): return f'你輸入的長度是{self.length}, 不能少于{self.min_len}個字符' def main(): # 2. 拋出異常: 嘗試執行:用戶輸入密碼,如果長度小于3,拋出異常 try: con = input('請輸入密碼:') if len(con) < 3: # 拋出異常類創建的對象 raise ShortInputError(len(con), 3) # 3. 捕獲該異常 except Exception as result: print(result) else: print('密碼已經輸入完成') main()
總結
原文鏈接:https://www.cnblogs.com/liuyuelinfighting/p/15845859.html
相關推薦
- 2022-10-17 Django?logging日志模塊實例詳解(日志記錄模板配置)_python
- 2022-07-17 絕對、相對導入以及包和常見內置模塊
- 2022-04-12 Python?設計模式行為型訪問者模式_python
- 2021-12-18 死鎖的處理基本策略和常用方法
- 2022-09-25 Spring核心IOC的核心類解析
- 2022-04-15 C語言的位段與枚舉詳解_C 語言
- 2022-09-21 Python數據庫反向生成Model最優方案示例_python
- 2023-02-03 使用PyGame顯示圖像的四種方案實例代碼_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支