本プロジェクトにおけるエラーの分類・処理方法・ログ出力の方針を定める.
本プロジェクトは単独開発のデスクトップ(WinForms)アプリであり,重厚なエラーコード体系や構造化ログ基盤は導入しない.既存コードの実装パターン(ErrorMsg + bool 返却・MessageBox・Debug.WriteLine・ShowMessage)を踏襲し,最小限に標準化する.
ShowMessage / MessageBox)と,開発者向けのログ(Debug.WriteLine)を混同しない.| 分類 | 例 | 処理方針 |
|---|---|---|
| 起動時の致命的エラー | 設定ファイル・参照ファイルの読み込み失敗,カメラ未接続 | 下位層で ErrorMsg に日本語の理由を設定し bool で失敗を返す.最終的に Form 層が MessageBox で通知して起動を中止する |
| 処理中の回復可能エラー | 撮影・保存・色変換中の一時的な失敗 | 例外境界で捕捉し,ShowMessage でユーザーに通知して当該処理のみ中断する(アプリは継続).UI 状態を適切に復帰させる |
| プログラミングエラー(バグ) | null 参照,配列範囲外,想定外の状態 | 握りつぶさない.Debug.WriteLine で記録し,原則そのまま伝播させて開発中に検知する |
Connect() / Open() 等の初期化メソッドは bool を返し,失敗時は ErrorMsg に日本語の理由を設定する.Form 層の MessageBox.Show に集約する.下位層(カメラ・光源・設定)は UI を直接呼び出さない._form.ShowMessage で通知して当該処理を中断する.EnableShots 等)を必ず復帰させる.finally で確実に終端する(例: BlockingCollection の CompleteAdding() を finally で呼び,消費側スレッドを停止させる).catch を禁止する.catch する場合は必ず「ログ出力+ユーザー通知」または「再スロー」のいずれかを行う.Mat・StreamWriter・スレッド同期資源などは using または try-finally で確実に解放する.Debug.WriteLine のみを使用する.永続ログファイルは作成しない(リリースビルドでは出力されない点を許容する).ShowMessage / MessageBox で行い,Debug.WriteLine と役割を分ける(ログ=開発者向け,メッセージ=利用者向け).※ 将来,撮影現場でのトラブル解析のために永続的な記録が必要になった場合は,ログファイル方式への変更を別途検討し,本方針を更新する.