Python - 試捕區塊
哈囉,未來的 Python 大師們!很高興能引導您們進入 Python 處理錯誤的奇妙世界。作為您親切友善的電腦科學老師,我見過無數學生在錯誤上跌跌撞撞,但不用害怕!在這個教程結束時,您將能像專家一樣處理異常。讓我們一起深入探討吧!
Python 的試捕區塊
想像您正在嘗試一道新的食譜。您不确定是否擁有所有的食材,但您還是想嘗試看看。這正是 Python 的 try-except 區塊所做的——它讓您嘗試執行一些代碼,並在出現潛在錯誤時優雅地處理。
以下是基本的結構:
try:
# 可能會引起異常的代碼
except:
# 處理異常的代碼
讓我們來看看一個簡單的例子:
try:
number = int(input("輸入一個數字: "))
result = 10 / number
print(f"10 除以 {number} 等於 {result}")
except:
print("糟糕!有點問題。")
在這段代碼中:
- 我們請求使用者輸入一個數字。
- 我們嘗試用 10 除以那個數字。
- 如果有任何問題(例如輸入零或非數字),我們就捕獲錯誤並列印一個友好的訊息。
嘗試用不同的輸入運行這段代碼。分別輸入 2,然後 0,然後 "香蕉"。看看它是如何分別處理每種情況的?
處理多個異常
現在,讓我們更進一步。可能會發生不同類型的錯誤,而我們可能希望對它們進行不同的處理。這就像針對不同類型的傷害有不同的急救箱一樣。
try:
number = int(input("輸入一個數字: "))
result = 10 / number
print(f"10 除以 {number} 等於 {result}")
except ValueError:
print("那不是有效的數字!")
except ZeroDivisionError:
print("你不能除以零!")
except:
print("出了點別的問題。")
在這裡,我們處理了三種情況:
- 如果使用者輸入了不是數字的東西(ValueError)
- 如果使用者輸入了零(ZeroDivisionError)
- 任何其他未預期的錯誤
用 "五",0,2 這樣的輸入運行這段代碼,看看它如何以不同的方式做出反應!
在試捕區塊中使用 Else 節
有時,我們希望只有在沒有發生異常的情況下才運行一些代碼。這就是 else 節的用處所在。把它想作是一切順利時的獎勵!
try:
number = int(input("輸入一個正數: "))
if number <= 0:
raise ValueError("那不是正數!")
result = 10 / number
except ValueError as ve:
print(f"錯誤:{ve}")
except ZeroDivisionError:
print("你不能除以零!")
else:
print(f"10 除以 {number} 等於 {result}")
print("感謝您輸入了一個有效的數字!")
在這個例子中:
- 我們檢查數字是否為正數。
- 如果不是,我們引發自己的 ValueError。
- 如果沒有發生異常,else 區塊將運行,給出一個很好的訊息。
Finally 節
最後但同樣重要的是,見見 finally 節。這個代碼區塊不論是否發生異常都將運行。這就像無論食譜是成功還是失敗,都要清理一樣。
try:
file = open("important_data.txt", "r")
content = file.read()
result = 10 / int(content)
except FileNotFoundError:
print("文件不存在!")
except ValueError:
print("文件中不包含有效的數字!")
except ZeroDivisionError:
print("文件中的數字是零!")
else:
print(f"結果是:{result}")
finally:
print("關閉文件...")
file.close()
在這個例子中:
- 我們嘗試打開一個文件並從中讀取一個數字。
- 我們處理各種潛在的錯誤。
- 如果成功,我們列印結果。
- 不論發生什麼,我們都確保在 finally 區塊中關閉文件。
異常處理方法摘要
以下是總結我們學過的異常處理方法的便捷表格:
方法 | 描述 | 使用情況 |
---|---|---|
try | 包圍可能引發異常的代碼 | 始終與 except、else 或 finally 一起使用 |
except | 處理特定的異常 | 捕獲和處理錯誤 |
else | 如果 try 區塊中沒有發生異常則運行 | 執行只有在 try 成功時才應運行的代碼 |
finally | 不論異常如何都會執行 | 清理操作(例如,關閉文件) |
raise | 手動引發一個異常 | 創建自定義錯誤條件 |
記住,良好的錯誤處理就像系安全帶一樣——在真正需要之前可能會顯得不相關!練習這些概念,您很快就會像專家一樣撰寫出堅固、對錯誤有抵抗力的 Python 代碼。
編程愉快,願您的異常總能被優雅地處理!
Credits: Image by storyset