今天是Python學習的第二十五天,這兩天的學習重點會是Python中的異常處理(Exception Handling),今日學習進階異常處理與自定義異常,學習 else 和 finally 的使用方式,學會自定義異常並在程式中應用,理解如何在錯誤處理中提升程式的穩定性與可讀性。
例一:else 與 finally 的使用
else 區塊可以在沒有異常發生時執行額外的代碼。
finally 區塊無論是否發生異常都會執行,通常用來釋放資源或進行收尾操作。
try:
num = int(input("請輸入一個數字: "))
result = 10 / num
except ZeroDivisionError:
print("錯誤:不能除以 0!")
else:
print(f"結果是: {result}")
finally:
print("程式執行結束。")
如果沒有發生異常,else 會執行並輸出結果。finally 無論異常是否發生,最終都會執行,這在需要關閉文件或釋放系統資源時非常有用。
例二:自定義異常
有時候,我們可能希望定義自己的異常類型,以應對程式中的特定錯誤情況。
class NegativeNumberError(Exception):
"""自定義異常:負數錯誤"""
pass
def check_positive(num):
if num < 0:
raise NegativeNumberError("不能是負數!")
return num
try:
num = int(input("請輸入一個正數: "))
check_positive(num)
print(f"輸入的是: {num}")
except NegativeNumberError as e:
print(f"錯誤:{e}")
自定義異常類別通過繼承 Exception 類別來實現,並可以在合適的情況下用 raise 觸發。
這可以幫助我們更加精確地控制程式的錯誤邏輯。
例三:raise 關鍵字
raise 允許我們主動觸發異常,這在處理業務邏輯時非常有用。
try:
raise ValueError("這是一個自定義的錯誤")
except ValueError as e:
print(f"捕捉到錯誤: {e}")
raise 關鍵字會觸發後面的異常類型,並且可以附帶自定義的錯誤訊息。
這兩天的學習讓我全面了解了 Python 異常處理的基本機制與進階應用。異常處理是一個保障程式穩定運行的關鍵技術,通過 try-except 語句,我能夠捕捉錯誤,並在發生異常時做出合適的處理。學會了 else 和 finally 之後,程式的結構更加清晰,並且自定義異常讓我能根據具體需求設計錯誤邏輯,進一步強化了我的程式錯誤處理能力。