例外を raise / 捕捉するコード(src/**)を書くときは本ルールに従うこと.コーディング全般の規約は .claude/rules/coding-style.md を参照する.
| 状況 | 送出する例外 |
|---|---|
| 利用者の入力(設定ファイル・データセットの定義・取り込み元の構成・バンドル等)の内容・形式の問題 | ValueError に統一して raise |
| 内部論理エラー(到達しないはずの分岐・不変条件違反等) | RuntimeError |
| pydantic を使うバリデーション | pydantic.ValidationError をそのまま伝播(握りつぶさない) |
SQLite の制約違反(sqlite3.IntegrityError) | 意味のある ValueError に変換して再送出する(from で元の例外を残す) |
目録は再現性の根拠になるため,静かな除外・静かな上書きをしない.
try で囲んで continue」は禁止.登録件数が静かに変わり,版の中身の解釈を誤るtiasdata check・tiasdata stats は現状把握のためのコマンドなので,問題を数えて最後に報告し,終了コードを 0 以外にする(止めずに全体を見る)例外メッセージ・ログに,実際の患者 ID・対応表の中身・元のファイル名を含めない.位置は研究用 ID・SHA-256・件数・取り込み元の名前で示す.
raise ValueError(f"取り込み元 '{source}' のフォルダ {folder_index} 番目: 想定外の拡張子のファイルが {count} 件ある")
--show-source-names のような明示の指定があるときに限り表示する| 終了コード | 意味 |
|---|---|
| 0 | 成功 |
| 1 | 入力・データの問題(ValueError).メッセージを標準エラーに 1 行で出す(スタックトレースは出さない) |
| 2 | 引数の誤り(argparse の既定) |
| それ以外の例外 | スタックトレースを出して異常終了する(バグとして扱う) |
except: で例外を無言で捨てない