Python 初學者的 try except 策略 – 用例外處理輕鬆進行除錯!

Tux stops at Exception light

如果剛開始學習 Python,當你遇到 try except 語句時,可能會感到困惑。"我需要記住什麼類別名稱?", "我什麼時候該使用這個?" 這樣的疑惑可能會出現。在這篇文章中,我們將逐步解釋 Python 例外處理 的核心概念,以及 初學者的 try except 策略


為什麼 Python 例外處理非常重要呢?

在執行程式碼時,它不總是按預期工作。使用者可能會輸入錯誤的數據,或者檔案不存在,或是網路中斷… 如果在這種情況下程式直接停止,使用者的體驗就會受到影響。

這就是 Python 的例外處理 (try except) 所必需的。

例外處理的目的是唯一的:即使出現錯誤,程式也能安全地繼續運行


try except 是怎樣的呢?

try:
    # 可能會出現問題的程式碼
except 例外類別 as e:
    # 問題出現時要做的事

例如:

try:
    result = 10 / 0
except ZeroDivisionError as e:
    print("不能除以0:", e)

這裡的關鍵是 ZeroDivisionError 這個 例外類別。這個類別正是標示出錯誤類型的'名稱標籤'。


什麼是例外類別,必須記住嗎?

許多 Python 初學者會問這個問題:

"這麼多例外類別,我都需要記住嗎?"

正確答案是 不需要!

實際的開發者也不會記住所有的例外類別。相反,只需對 幾個常用的例外類別熟悉,對於其他的則是在問題發生時 查看錯誤訊息來使用

例如:

FileNotFoundError: [Errno 2] 沒有這個檔案或目錄: 'none.txt'

那麼接下來可以這樣寫:

except FileNotFoundError:

就是這樣用。


常用的 Python 例外類別 TOP 7

例外類別 什麼時候會發生?
ValueError 當值不正確時
TypeError 當類型不匹配時
IndexError 當列表範圍越界時
KeyError 當字典中不存在鍵時
ZeroDivisionError 當除以0時
FileNotFoundError 當檔案不存在時
Exception 所有一般錯誤的父類

只要掌握到這些,大多數 Python 例外處理的情況都能應對。


try except, 初學者策略,這樣熟悉!

  1. 如果不清楚,先用 Exception 包起來。
try:
    dangerous_code()
except Exception as e:
    print("出現問題:", e)
  1. 根據錯誤訊息具體化所需的例外類別。

  2. 相信 IDE(程式編輯器)的自動完成功能。 大多數會給出推薦。

  3. 遇到同樣的問題多次,會自然熟悉。


例外處理是除錯的朋友

Python 例外處理不僅僅是防止錯誤的工具,更是 追踪錯誤和查找原因的強大除錯工具

例外訊息通常會像這樣顯示:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    x = 10 / 0
ZeroDivisionError: division by zero

透過這些資訊,可以準確知道檔案名稱、行號和錯誤類型。因此,如果好好運用例外處理,除錯也會變得輕鬆。


其他例外類別 – StopIteration

StopIteration 是當可迭代對象(iterator)沒有更多項目要返回時發生的例外。在一般的 for 循環中,這會自動處理,因此無需過度關注,但當使用 next() 函數時,有時需要手動處理。

例如:

it = iter([1, 2])
print(next(it))  # 1
print(next(it))  # 2
print(next(it))  # 發生 StopIteration

或者在以下代碼中:

try:
    category = next(cat for cat in all_categories if cat.slug == category_slug)
except StopIteration:
    pass  # 不做任何事情

在這種情況下,如果沒有擁有該 slug 的類別,就不做任何事情,然後繼續。這可視為為了不打斷程式流程而採取的最基本防禦。


總結 – Python 例外處理,一開始會有些困難,但很快就會熟悉

一開始不需要記住所有的例外類別,也不需要完美的例外處理。相反,請開始養成 意識到問題情況、用 try except 包起來,並分析錯誤訊息的習慣。

Python 例外處理 使程式更加健壯,並能更輕鬆地找到後來的問題。對於初學者來說,與其追求完美,不如 在實際操作中的生存能力 更為重要。try except 將會是你邁出的第一步。


在下篇文章中,我們將介紹 try except else finally 結構的擴展例外處理流程!😊