---
paths: ["lib/**"]
---

# エラーハンドリング規約 (Error Handling)

エラーの分類・処理方法・ログ出力の方針を定める．例外を扱うコードを書くときは本ルールに従うこと．

## 基本方針 (Basic Policy)

層をまたいでエラーを伝播させ，最終的に画面でユーザーに通知する．

- **Service 層**: 例外をキャッチし，呼び出し元に結果を返す．想定外の例外はそのまま上位に伝播させる
- **Provider 層**: Service の結果を受け取り，状態（エラーメッセージ等）として保持する
- **Screen 層**: Provider の状態を参照し，ユーザーにフィードバックを表示する（スナックバー等）

## 想定するエラー (Expected Errors)

| エラー | 発生箇所 | 対処 |
| --- | --- | --- |
| カメラ初期化失敗 | CameraProvider | エラーメッセージを画面に表示 |
| パーミッション拒否 | PermissionService | 設定画面への誘導を表示 |
| ストレージ書き込み失敗 | FileService | スナックバーでエラー通知 |
| ファイル削除失敗 | FileService | スナックバーでエラー通知 |

## ログ出力 (Logging)

- 開発中は `debugPrint()` を使用する（リリースビルドでは自動的に無効化される）
- `print()` は使用しない
