例外処理・ログ出力を書くときは本方針に従うこと.
| 分類 | 例 | 扱い |
|---|---|---|
| 画像 1 枚だけの失敗 | 舌を検出できない,舌領域が 1 つにまとまらない | その画像を失敗として記録し,次の画像へ進む.analysis.csv の失敗行の形式(<画像名>,Tongue detection error 等)は変えない |
| 解析を続けられない失敗 | モデル・外部 exe・DLL が見つからない,入力フォルダが無い | 解析を止め,原因(どのファイルが無いか)をダイアログで伝える |
| 想定外の例外 | 上記以外 | 解析を止め,ダイアログで伝え,ログに詳細を残す.画面を操作できる状態に戻す |
catch だけで何もしない,または catch { } で原因を捨てる書き方をしない.捕まえた例外はログに残す.catch (Exception) は最上位の処理だけにする).BackgroundWorker で解析するときは RunWorkerCompleted で e.Error を確認し,例外を画面に伝える.MessageBox)は画面のスレッドから出す(解析スレッドからは Invoke を使う).log.txt として書き出す(画像ごとの開始・終了・失敗理由,想定外の例外の詳細).Console.WriteLine は WinForms アプリでは見えないため,確認用の出力に使わない.Cv2.ImShow・Cv2.WaitKey・出力先の固定等)をコミットに残さない.