例外處理
## Python 執行階段錯誤
執行階段錯誤(Runtime Error)是指程式語法正確,但在實際執行時發生問題,例如:
- 除數為 0:`ZeroDivisionError`
- 將文字轉換成數字失敗:`ValueError`
- 存取不存在的串列索引:`IndexError`
- 開啟不存在的檔案:`FileNotFoundError`
如果沒有處理這些錯誤,程式通常會中斷,並顯示錯誤訊息。
## `try except` 語法
`try` 區塊放置可能發生錯誤的程式碼;如果發生指定類型的例外,則執行 `except` 區塊中的處理程式。
```python
try:
# 可能發生錯誤的程式碼
except 例外類型:
# 發生錯誤時執行的程式碼
```
也可以使用 `except Exception` 處理一般例外,但實務上通常建議指定明確的例外類型。
## 範例一:處理除以零
```python
try:
number = int(input("請輸入一個數字:"))
result = 100 / number
print("結果:", result)
except ZeroDivisionError:
print("錯誤:除數不能為零。")
except ValueError:
print("錯誤:請輸入有效的整數。")
```
當使用者輸入 `0` 時,會捕捉 `ZeroDivisionError`;若輸入文字,則會捕捉 `ValueError`。
## 範例二:處理不存在的串列索引
```python
names = ["小明", "小華", "小美"]
try:
index = int(input("請輸入索引:"))
print("姓名:", names[index])
except IndexError:
print("錯誤:索引超出範圍。")
except ValueError:
print("錯誤:請輸入整數索引。")
```
當輸入超出 `0` 到 `2` 的索引時,會發生並處理 `IndexError`。
除了 `try` 和 `except`,還可以搭配:
- `else`:沒有發生例外時執行
- `finally`:無論是否發生例外,都會執行,常用於關閉檔案或釋放資源
相關學習地圖、教學課程
Python 資料工程
Python 後端工程、資料庫