Python | 「例外を使いすぎるとコードが読みにくくなる」問題と、最小限に抑える設計のコツ

Python
スポンサーリンク

初心者がよくやってしまうのが「何でもかんでも try/except で囲む」ことです。
確かに例外は便利ですが、使いすぎるとコードが読みにくくなり、バグの原因を隠してしまうことがあります。ここではその問題点と、例外を最小限に抑える設計のコツを解説します。


1. 問題点:例外だらけのコードは読みにくい

悪い例

try:
    nums = [1, 2, 3]
    try:
        target = 2
        try:
            for n in nums:
                if n == target:
                    print("見つかった")
                    raise Exception("終わり")
        except:
            pass
    except:
        pass
except:
    pass
Python

👉 何でも try/except にしてしまうと「どこで何が起きたか」が分からなくなる。
本来は breakreturn で済む処理まで例外にしてしまうと、正常な流れと異常な流れの区別が消える


2. コツ① 正常な制御は break / return を使う

例外は「想定外の異常」に使うべきです。
「見つかったら終了」などの正常な流れは breakreturn で書く方が読みやすい。

良い例

nums = [1, 2, 3]
target = 2

for n in nums:
    if n == target:
        print("見つかった")
        break
else:
    print("見つからなかった")
Python

👉 正常な探索処理 → break / else で表現。例外は不要。


3. コツ② 本当に異常なケースだけ例外にする

例外は「プログラムが続けられない事態」に使う。

例題: ファイル読み込み

try:
    with open("data.txt") as f:
        content = f.read()
except FileNotFoundError:
    print("ファイルが存在しません")
Python

👉 「ファイルがない」は想定外 → 例外で処理。
「見つからなかった(検索結果ゼロ)」は正常 → 例外ではなく通常の分岐。


4. コツ③ 例外をまとめて扱う

例外を細かく分けすぎると読みにくい。
「ここではファイル関連のエラーをまとめて処理する」と決めるとスッキリする。

良い例

try:
    with open("data.txt") as f:
        content = f.read()
except (FileNotFoundError, PermissionError) as e:
    print("ファイルエラー:", e)
Python

👉 関連する例外をまとめて処理 → コードが簡潔になる。


5. コツ④ 例外を隠さずログに残す

初心者がやりがちなのが「except: pass」。
これはエラーを握りつぶしてしまい、原因が分からなくなる。

悪い例

try:
    risky_operation()
except:
    pass  # ← エラーが消えてしまう
Python

良い例

import logging

try:
    risky_operation()
except Exception as e:
    logging.error("エラー発生: %s", e)
Python

👉 エラーは無視せず、ログに残すことで後から原因を追える。


6. 初心者向けまとめ

  • 例外は「非常口」 → 本当に異常なケースだけに使う。
  • 正常な流れは break / return → 例外で書かない。
  • 関連する例外はまとめて処理 → コードを簡潔に。
  • エラーは隠さずログに残す → デバッグしやすくなる。

💡 つまり「例外は最小限に、正常な処理は通常の制御構文で」。
このルールを守ると、コードが読みやすくなり、バグも減ります。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました