Python 中的錯誤處理機制十分靈活,能讓我們捕捉、管理並處理程式中可能出現的各種錯誤和異常情況。本文將深入介紹 Python 中的錯誤處理語法,包括 try-except
結構、raise
用法以及如何自訂例外類別,讓程式更具容錯性和健壯性。
try-except
是 Python 錯誤處理的基本結構,可以捕捉和處理程式在執行過程中發生的例外。其基本用法如下:
try:
# 嘗試執行的程式碼
result = 10 / 0 # 故意製造錯誤
except ZeroDivisionError:
# 捕捉並處理 ZeroDivisionError 錯誤
print("不能除以零!")
try
:放置可能會發生錯誤的程式碼。如果程式碼執行過程中遇到錯誤,Python 會立即跳至 except
區塊。except
:放置錯誤處理的程式碼,指定的錯誤類型可以是 Python 內建的錯誤類型或自訂錯誤類型。若不指定類型,會捕捉所有錯誤。try:
value = int(input("請輸入數字:"))
result = 100 / value
print("結果為:", result)
except ZeroDivisionError:
print("發生錯誤:不能除以零")
except ValueError:
print("發生錯誤:輸入值不是有效的數字")
在這個範例中,我們捕捉了兩種可能的錯誤:
ZeroDivisionError
:當除數為 0 時發生。ValueError
:當輸入的值無法轉換為整數時發生。可以在一個 try
區塊內使用多個 except
子句來針對不同的錯誤做出不同的反應。
try:
num = int(input("請輸入數字:"))
result = 10 / num
except ValueError:
print("這不是一個有效的數字!")
except ZeroDivisionError:
print("不能除以零!")
except Exception as e:
print(f"發生未知錯誤:{e}")
Exception
是所有內建錯誤的基類,所以用來捕捉任何未預料的錯誤。
有時候我們需要在特定情況下主動引發例外,可以使用 raise
關鍵字來達到這個目的。當條件不符或輸入不正確時,主動拋出錯誤能夠讓程式的執行流程更安全。
raise ExceptionType("錯誤訊息")
def check_age(age):
if age < 0:
raise ValueError("年齡不能為負數")
print(f"你的年齡是:{age}")
try:
user_age = int(input("請輸入年齡:"))
check_age(user_age)
except ValueError as e:
print(f"錯誤:{e}")
在這裡,我們定義了一個 check_age
函數,如果輸入的年齡是負數,則 raise
主動拋出 ValueError
錯誤,並給出自訂錯誤訊息 "年齡不能為負數"
。在 try-except
區塊中,我們捕捉到此錯誤並顯示出詳細的錯誤訊息。
Python 允許我們自訂例外類別,以便對某些特定情況進行更細緻的錯誤管理。自訂例外類別能讓程式碼的可讀性提高,同時也讓我們可以針對特殊情況撰寫自定義的錯誤訊息或處理流程。
Exception
的類別。__init__
方法,用來接受錯誤訊息。raise
關鍵字來引發自訂例外。class InsufficientFundsError(Exception):
def __init__(self, balance, amount):
super().__init__(f"餘額不足:目前餘額 ${balance},但嘗試提取 ${amount}")
def withdraw(balance, amount):
if amount > balance:
raise InsufficientFundsError(balance, amount)
balance -= amount
return balance
try:
account_balance = 1000
withdraw_amount = int(input("請輸入提取金額:"))
new_balance = withdraw(account_balance, withdraw_amount)
print(f"提取成功,新的餘額為:${new_balance}")
except InsufficientFundsError as e:
print(f"錯誤:{e}")
在這個範例中,我們建立了自訂例外類別 InsufficientFundsError
,當提取的金額超過帳戶餘額時,便拋出此例外並顯示詳細訊息。這樣可以更加精確地處理特定的錯誤情況。
try-except
:捕捉並處理程式中可能出現的錯誤。raise
:主動引發例外,用於在不滿足特定條件時停止程式執行。藉由掌握這些錯誤處理機制,能讓程式更具健壯性並能更精確地處理各種潛在的錯誤情況。