1. 簡介:Python 中的例外處理重要性
在程式開發中,例外與錯誤是無法避免的。然而,透過適當的例外處理,可以防止程式意外終止,並向使用者提供清楚的錯誤訊息。Python 提供了一套強大的機制來處理這類例外。善用例外處理可以提高程式的可靠性,使其運行更加順暢。
例如,當使用者嘗試進行除以 0 的計算,或試圖開啟一個不存在的檔案時,如果沒有適當的例外處理,程式將會立即崩潰。然而,透過正確的例外處理,程式可以繼續執行,或向使用者顯示易於理解的錯誤訊息。
2. Python 的例外處理:基本語法與流程
在 Python 中,主要使用三個關鍵字來進行例外處理:try
、except
和 finally
。
2.1 使用 try
來偵測錯誤
try
陳述式用於包圍可能發生錯誤的程式碼。例如,對於網路操作、檔案處理或使用者輸入等可能產生錯誤的部分,應該將它們放入 try
區塊中。
try:
result = 10 / 0
except:
print("發生錯誤")
在上述範例中,10 / 0
會導致例外發生,因此 except
區塊會被執行。
2.2 使用 except
來處理錯誤
except
陳述式用於捕捉發生的例外並進行適當的處理。透過 except
,可以避免程式因錯誤而異常終止。此外,也可以根據不同的例外類型指定對應的處理方式。
try:
print(a)
except NameError:
print("變數尚未定義")
except ZeroDivisionError:
print("無法執行除以 0 的運算")
這樣可以針對不同的例外類型執行不同的處理方式。
2.3 使用 finally
確保資源釋放
finally
區塊無論是否發生例外,皆會執行。它通常用於確保程式釋放資源,例如關閉檔案或釋放網路連線。
try:
file = open("test.txt", "r")
finally:
file.close()
這樣可以確保檔案操作或資料庫連線等資源管理能夠正確執行,避免資源洩漏。

3. 常見的例外類型及其處理方式
Python 提供多種內建的例外類型,以下介紹幾種常見的例外以及如何處理它們。
3.1 NameError
:使用未定義的變數
NameError
當程式試圖使用一個尚未定義的變數時,會拋出此例外。例如,如果變數尚未初始化,就會發生這個錯誤。
try:
print(a)
except NameError:
print("變數尚未定義")
3.2 TypeError
:操作不相容的數據類型
TypeError
當試圖對不相容的數據類型執行操作時,就會發生。例如,試圖將字串與整數相加:
try:
result = '10' + 5
except TypeError:
print("數據類型不相容")
3.3 ValueError
:傳遞無效的值
ValueError
當函式接收到正確類型但無效的值時,就會發生。例如,試圖將一個無法轉換為整數的字串轉換為整數:
try:
number = int("abc")
except ValueError:
print("傳遞了無效的值")
4. 如何處理多個例外
在 Python 中,可以在 try
區塊內捕捉多種例外。可以選擇單獨處理每個例外,或者使用單一 except
區塊來捕捉多個例外。
4.1 分別處理不同的例外
當不同類型的錯誤需要不同的處理方式時,可以為每種例外提供獨立的 except
區塊。
try:
result = 10 / 0
except ZeroDivisionError:
print("無法執行除以 0 的運算")
except NameError:
print("變數尚未定義")
4.2 合併處理多種例外
當多個例外需要相同的處理方式時,可以在 except
區塊中同時捕捉多種類型的例外。
try:
result = 10 / '10'
except (ZeroDivisionError, TypeError):
print("發生了無效的運算")
這樣可以讓程式碼更加簡潔,避免重複的錯誤處理邏輯。

5. 使用者自訂例外與 raise
陳述式
在某些情況下,內建的例外類型可能無法完全描述錯誤,因此 Python 允許開發者自訂例外類型。透過 raise
陳述式,可以手動拋出例外。
5.1 使用 raise
來觸發自訂例外
例如,可以定義一個例外,當數值為負數時拋出錯誤:
def check_value(value):
if value < 0:
raise ValueError("不允許輸入負數")
return value
try:
check_value(-10)
except ValueError as e:
print(e)
使用 raise
可以控制錯誤的發生,並提供詳細的錯誤訊息,以利於除錯。
6. 總結與最佳實踐
例外處理對於提升 Python 程式的穩定性和可維護性至關重要。以下是一些最佳實踐:
- 捕捉特定的例外:避免使用過於廣泛的
Exception
來捕捉所有錯誤,而是應該明確指定可能發生的例外類型,這樣可以更容易進行錯誤診斷。 - 確保資源釋放:使用
finally
或with
陳述式來確保開啟的文件或資料庫連線能夠被正確關閉。 - 提供清楚的錯誤訊息:當例外發生時,應提供易於理解的錯誤訊息,讓使用者能夠迅速理解問題並採取適當的行動。
透過正確的例外處理策略,可以讓 Python 程式在錯誤發生時保持穩定運行,並確保使用者擁有更佳的體驗。