Python錯誤和異常基礎
1. 錯誤的類型
在Python中,錯誤主要分為兩類:語法錯誤和邏輯錯誤。
- 語法錯誤(SyntaxError):當Python無法理解代碼時,會引發語法錯誤。
- 邏輯錯誤(LogicError):代碼可以正常運行,但結果不符合預期。
- 運行時錯誤(RuntimeError):在程序運行過程中發生的錯誤,例如除以零。
2. 異常處理
異常是運行時錯誤的具體表現,Python提供了try-except語句來處理異常。
# 使用try-except處理異常
try:
result = 10 / 0 # 這裡會引發ZeroDivisionError
except ZeroDivisionError:
print("錯誤:不能除以零!")
3. 捕獲多種異常
# 捕獲多種異常
try:
value = int(input("請輸入一個整數:"))
result = 10 / value
except ValueError:
print("錯誤:請輸入有效的整數!")
except ZeroDivisionError:
print("錯誤:不能除以零!")
4. 使用finally語句
finally語句無論是否發生異常都會執行,通常用於釋放資源。
# 使用finally語句
try:
file = open('example.txt', 'r')
# 進行文件操作
except FileNotFoundError:
print("錯誤:文件未找到!")
finally:
file.close() # 確保文件被關閉
5. 自定義異常
可以通過繼承Exception類來創建自定義異常。
# 自定義異常類別
class MyError(Exception):
pass
try:
raise MyError("這是一個自定義異常")
except MyError as e:
print(e)
6. 練習題
-
編寫一個程序,要求用戶輸入一個數字,並計算其平方根,處理可能的異常。
-
創建一個自定義異常,當用戶輸入的數字小於0時引發該異常。
7. 常見錯誤和解決方案
- ZeroDivisionError:當嘗試除以零時引發。解決方案:檢查除數是否為零。
- ValueError:當函數接收到的參數類型不正確時引發。解決方案:檢查輸入的數據類型。
8. 最佳實踐
- 盡量具體捕獲異常,而不是使用通用的except。
- 在異常處理中提供有意義的錯誤信息。
- 使用finally語句釋放資源。