Newer
Older
TIASjudge / .claude / rules / error-handling.md

paths: ["src/**"]

エラーハンドリング方針 (Error Handling Policy)

エラー処理・ログ出力を書くときは本方針に従うこと.

エラーの分類と処理 (Classification)

分類例処理
ユーザー入力エラー拡張子違い,クリック数超過,未読込での診断gui/ でガードし,メッセージボックスで案内(文言は SPEC_01「入力ガード」)
データエラー変換行列 CSV の形式不正,data.csv の欠損core/ が専用例外を送出し,gui/ が捕捉してエラーダイアログ表示
診断失敗SVM が学習不能(正例不足等)core/ が失敗を示す結果を返し,結果画面に「Diagnosis failed」を表示(SPEC_02「診断失敗の判定」)
バグ(想定外)上記以外の例外捕捉して握りつぶさない.スタックトレースをログに残して落とす

規則 (Rules)

  • core/ に専用例外を定義する(例: DataFormatError).core/ は GUI を知らないため,メッセージボックス表示等は行わない(依存方向は project-structure.md 参照)
  • 例外の握りつぶし(except Exception: pass)は禁止.捕捉するのは「その場で意味のある対処ができる」場合のみ
  • 入力値の検証は境界(ファイル読込直後・GUI 入力時)で行い,core/ の内部では検証済みを前提とする
  • 旧実装の「エラーをマジックナンバーで表現する」方式(診断失敗 = 特定スコア組)は移植しない.失敗は例外または明示的な結果型で表す

ログ (Logging)

  • 標準ライブラリの logging を使う.print によるデバッグ出力を残さない
  • core/ はモジュールロガー(logging.getLogger(__name__))を使い,出力先の設定はエントリポイント側で行う
  • 診断実行時は入力(Lab 値)と出力(5 色スコア)を INFO で記録する(研究用途での再確認・回帰テストデータの収集に使うため)