
- Python 基礎
- Python - 首頁
- Python - 概述
- Python - 歷史
- Python - 特性
- Python vs C++
- Python - Hello World 程式
- Python - 應用領域
- Python - 直譯器
- Python - 環境搭建
- Python - 虛擬環境
- Python - 基本語法
- Python - 變數
- Python - 資料型別
- Python - 型別轉換
- Python - Unicode 系統
- Python - 字面量
- Python - 運算子
- Python - 算術運算子
- Python - 比較運算子
- Python - 賦值運算子
- Python - 邏輯運算子
- Python - 位運算子
- Python - 成員運算子
- Python - 身份運算子
- Python - 運算子優先順序
- Python - 註釋
- Python - 使用者輸入
- Python - 數字
- Python - 布林值
- Python 控制語句
- Python - 控制流
- Python - 決策
- Python - If 語句
- Python - If else
- Python - 巢狀 If
- Python - Match-Case 語句
- Python - 迴圈
- Python - for 迴圈
- Python - for-else 迴圈
- Python - While 迴圈
- Python - break 語句
- Python - continue 語句
- Python - pass 語句
- Python - 巢狀迴圈
- Python 函式 & 模組
- Python - 函式
- Python - 預設引數
- Python - 關鍵字引數
- Python - 僅限關鍵字引數
- Python - 位置引數
- Python - 僅限位置引數
- Python - 可變引數
- Python - 變數作用域
- Python - 函式註解
- Python - 模組
- Python - 內建函式
- Python 字串
- Python - 字串
- Python - 字串切片
- Python - 修改字串
- Python - 字串連線
- Python - 字串格式化
- Python - 跳脫字元
- Python - 字串方法
- Python - 字串練習
- Python 列表
- Python - 列表
- Python - 訪問列表元素
- Python - 修改列表元素
- Python - 新增列表元素
- Python - 刪除列表元素
- Python - 迴圈遍歷列表
- Python - 列表推導式
- Python - 排序列表
- Python - 複製列表
- Python - 合併列表
- Python - 列表方法
- Python - 列表練習
- Python 元組
- Python - 元組
- Python - 訪問元組元素
- Python - 更新元組
- Python - 解包元組
- Python - 迴圈遍歷元組
- Python - 合併元組
- Python - 元組方法
- Python - 元組練習
- Python 集合
- Python - 集合
- Python - 訪問集合元素
- Python - 新增集合元素
- Python - 刪除集合元素
- Python - 迴圈遍歷集合
- Python - 合併集合
- Python - 複製集合
- Python - 集合運算子
- Python - 集合方法
- Python - 集合練習
- Python 字典
- Python - 字典
- Python - 訪問字典元素
- Python - 修改字典元素
- Python - 新增字典元素
- Python - 刪除字典元素
- Python - 字典檢視物件
- Python - 迴圈遍歷字典
- Python - 複製字典
- Python - 巢狀字典
- Python - 字典方法
- Python - 字典練習
- Python 陣列
- Python - 陣列
- Python - 訪問陣列元素
- Python - 新增陣列元素
- Python - 刪除陣列元素
- Python - 迴圈遍歷陣列
- Python - 複製陣列
- Python - 反轉陣列
- Python - 排序陣列
- Python - 合併陣列
- Python - 陣列方法
- Python - 陣列練習
- Python 檔案處理
- Python - 檔案處理
- Python - 寫入檔案
- Python - 讀取檔案
- Python - 重新命名和刪除檔案
- Python - 目錄
- Python - 檔案方法
- Python - OS 檔案/目錄方法
- Python - OS 路徑方法
- 面向物件程式設計
- Python - OOPs 概念
- Python - 類 & 物件
- Python - 類屬性
- Python - 類方法
- Python - 靜態方法
- Python - 建構函式
- Python - 訪問修飾符
- Python - 繼承
- Python - 多型
- Python - 方法重寫
- Python - 方法過載
- Python - 動態繫結
- Python - 動態型別
- Python - 抽象
- Python - 封裝
- Python - 介面
- Python - 包
- Python - 內部類
- Python - 匿名類和物件
- Python - 單例類
- Python - 包裝類
- Python - 列舉
- Python - 反射
- Python 錯誤 & 異常
- Python - 語法錯誤
- Python - 異常
- Python - try-except 程式碼塊
- Python - try-finally 程式碼塊
- Python - 丟擲異常
- Python - 異常鏈
- Python - 巢狀 try 程式碼塊
- Python - 使用者自定義異常
- Python - 日誌記錄
- Python - 斷言
- Python - 內建異常
- Python 多執行緒
- Python - 多執行緒
- Python - 執行緒生命週期
- Python - 建立執行緒
- Python - 啟動執行緒
- Python - 執行緒連線
- Python - 執行緒命名
- Python - 執行緒排程
- Python - 執行緒池
- Python - 主執行緒
- Python - 執行緒優先順序
- Python - 守護執行緒
- Python - 執行緒同步
- Python 同步
- Python - 執行緒間通訊
- Python - 執行緒死鎖
- Python - 中斷執行緒
- Python 網路程式設計
- Python - 網路程式設計
- Python - 套接字程式設計
- Python - URL 處理
- Python - 泛型
- Python 庫
- NumPy 教程
- Pandas 教程
- SciPy 教程
- Matplotlib 教程
- Django 教程
- OpenCV 教程
- Python 雜項
- Python - 日期 & 時間
- Python - 數學
- Python - 迭代器
- Python - 生成器
- Python - 閉包
- Python - 裝飾器
- Python - 遞迴
- Python - 正則表示式
- Python - PIP
- Python - 資料庫訪問
- Python - 弱引用
- Python - 序列化
- Python - 模板
- Python - 輸出格式化
- Python - 效能測量
- Python - 資料壓縮
- Python - CGI 程式設計
- Python - XML 處理
- Python - GUI 程式設計
- Python - 命令列引數
- Python - 文件字串
- Python - JSON
- Python - 傳送郵件
- Python - 擴充套件
- Python - 工具/實用程式
- Python - GUI
- Python 高階概念
- Python - 抽象基類
- Python - 自定義異常
- Python - 高階函式
- Python - 物件內部
- Python - 記憶體管理
- Python - 元類
- Python - 使用元類進行超程式設計
- Python - 模擬和存根
- Python - 猴子補丁
- Python - 訊號處理
- Python - 型別提示
- Python - 自動化教程
- Python - Humanize 包
- Python - 上下文管理器
- Python - 協程
- Python - 描述符
- Python - 診斷和修復記憶體洩漏
- Python - 不可變資料結構
- Python 有用資源
- Python - 問答
- Python - 線上測驗
- Python - 快速指南
- Python - 參考
- Python - 速查表
- Python - 專案
- Python - 有用資源
- Python - 討論
- Python 編譯器
- NumPy 編譯器
- Matplotlib 編譯器
- SciPy 編譯器
Python - 自定義異常
什麼是 Python 中的自定義異常?
Python 的自定義異常是使用者定義的錯誤類,擴充套件了基本 Exception 類。開發人員可以定義和處理特定於其應用程式的特定錯誤條件。開發人員可以透過建立自定義異常來改進程式碼。這允許更具意義的錯誤訊息,並透過指示發生了哪種錯誤以及錯誤的來源來促進除錯過程。
為了定義一個唯一的異常,我們通常必須建立一個新類,其名稱來自 Python 的內建 Exception 類或其子類之一。可以使用相應的 except 程式碼塊來引發此自定義類並捕獲它。
開發人員可以在發生特定錯誤時控制程式的流程並採取適當的操作,例如記錄錯誤、重試操作或優雅地關閉應用程式。自定義異常可以透過覆蓋__init__方法並將額外資訊儲存為例項屬性來攜帶有關錯誤的額外上下文或資料。
使用自定義異常可以提高複雜程式中錯誤處理的清晰度。它有助於區分可能需要不同處理策略的不同型別的錯誤。例如,當檔案解析庫可能定義諸如 FileFormatError、MissingFieldError 或 InvalidFieldError 等異常來處理檔案處理過程中可能出現的各種問題時。這種粒度級別允許客戶端程式碼更有效地捕獲和解決特定問題,從而提高軟體的健壯性和使用者體驗。Python 的自定義異常是處理錯誤和編寫更具表現力的程式碼的絕佳工具。
為什麼要使用自定義異常?
Python 中的自定義異常提供了幾個優勢,這些優勢增強了我們程式碼的功能、可讀性和可維護性。以下是使用自定義異常的主要原因:
- 特異性:自定義異常允許我們表示特定於我們應用程式的特定錯誤條件。
- 清晰度:它們使程式碼更易於理解,因為它們清楚地描述了錯誤的性質。
- 粒度:自定義異常允許更精確的錯誤處理。
- 一致性:它們有助於在整個程式碼庫中維護一致的錯誤處理策略。
建立自定義異常
在 Python 中建立自定義異常涉及定義新的異常類,這些類擴充套件自 Python 的內建 Exception 類或其任何子類。這允許開發人員建立針對其應用程式中特定場景的專門錯誤型別。以下是如何有效地建立和使用自定義異常:
定義自定義異常類
我們可以透過定義一個繼承自Exception或另一個異常類(如RuntimeError、ValueError等)的新類來開始建立自定義異常,具體取決於錯誤的性質。
以下是定義自定義異常類的示例。在此示例中,CustomError 是一個繼承自 Exception 的自定義異常類。__init__ 方法使用可選的錯誤訊息初始化異常 -
class CustomError(Exception): def __init__(self, message): super().__init__(message) self.message = message
引發自定義異常
要引發自定義異常,我們可以使用 raise 語句,後跟自定義異常類的一個例項。可以選擇傳遞一條訊息來提供有關錯誤的上下文。
在此函式process_data()中,當資料引數為空時,會引發 CustomError 異常,以指示特定的錯誤條件。
def process_data(data): if not data: raise CustomError("Empty data provided") # Processing logic here
處理自定義異常
要處理自定義異常,我們必須使用try-except 塊。在 except 塊中捕獲自定義異常類,並根據需要處理錯誤。
在下面的程式碼中,如果process_data([])引發了 CustomError,則 except 塊會捕獲它,我們可以列印錯誤訊息 (e.message) 或執行其他錯誤處理任務。
try: process_data([]) except CustomError as e: print(f"Custom Error occurred: {e.message}") # Additional error handling logic
自定義異常示例
以下是 Python 中自定義異常處理的基本示例。在此示例中,我們透過對內建的 Exception 類進行子類化來定義一個自定義異常,並使用 try-except 塊來處理自定義異常 -
# Define a custom exception class CustomError(Exception): def __init__(self, message): self.message = message super().__init__(self.message) # Function that raises the custom exception def check_value(value): if value < 0: raise CustomError("Value cannot be negative!") else: return f"Value is {value}" # Using the function with exception handling try: result = check_value(-5) print(result) except CustomError as e: print(f"Caught an exception: {e.message}")
輸出
執行以上程式碼後,我們將獲得以下輸出 -
Caught an exception: Value cannot be negative!