エラー処理を後回しにして困った話|Python実践ログ | SORAXIOM

エラー処理を後回しにして困った話

スポンサーリンク
Python実践ログ
スポンサーリンク

動いているから大丈夫だと思っていた

ツールもスクリプトも、
問題なく動いているように見えていました。

入力も想定どおり。
結果も合っている。

だから、
エラー処理は「後でいい」と判断しました。


エラーは突然やってくる

ある日、いつもと少し違うデータが来ました。

  • 空のCSV
  • 数値だと思っていた列に文字
  • ファイルが存在しない

その瞬間、スクリプトは止まりました。

理由は単純で、
想定外を一切考えていなかった からです。


最初に書いていたコード

当時のコードは、こんな形でした。

def process(file):
    rows = read_csv(file)
    total = 0
    for r in rows:
        total += int(r["value"])
    return total

入力が正しければ問題ありません。
でも、前提が一つでも崩れると即エラーです。


後から追加したエラー処理

慌てて、最低限の対処を入れました。

def process(file):
    try:
        rows = read_csv(file)
        total = 0
        for r in rows:
            total += int(r["value"])
        return total
    except Exception as e:
        print(f"error: {e}")
        return None

これで止まらなくはなりましたが、
今度は 何が起きたのか分からない 状態になりました。


本当に足りなかったもの

振り返ると、
足りなかったのは try/except そのものではありません。

  • どこで失敗していいのか
  • 失敗したらどうするのか
  • どこまでを正常とするのか

この設計が、最初から無かったのです。


考え方を変えた

そこで、考え方を変えました。

  • 失敗は起きる前提にする
  • エラーは隠さず、記録する
  • 「止まる」と「続ける」を分ける
def process(file):
    rows = read_csv(file)
    total = 0
    for r in rows:
        try:
            total += int(r["value"])
        except ValueError:
            log_error(r)
    return total

すべてを握りつぶさず、
扱える形で残す ことを優先しました。


作って分かったこと

この経験で分かったのは、

  • エラー処理は後付けしにくい
  • 「止まらない」と「安全」は違う
  • エラーは設計の一部

ということです。


おわりに

この話は、
エラー処理を後回しにした結果、
現場で困った経験を残した実践ログです。

エラーは例外ではなく、
前提として扱うべきもの だと感じました。

コメント

タイトルとURLをコピーしました