例外の配置
例外の配置とは
例外の配置とは、業務ルール違反や技術的失敗を表す型を、その失敗の意味を所有する層へ置くことです。ドメインの失敗とDB・通信の失敗を区別します。
例外クラスはどこに置く?
推奨
破られたルールの所有者と同じ層に置き、技術例外は境界でアプリケーション向けの失敗へ変換する。
なぜ
ドメインの失敗と通信・DBの失敗を区別すると、呼び出し側が意味に応じた処理を選べます。
判断基準
- ドメイン例外は業務語彙で命名する
- ORM例外をUIまで漏らさない
- 予期できる不成立はResult型も検討する
BAD
すべてをBusinessException一種類に包み、原因や回復方法を失う。
GOOD
OrderAlreadyShippedをdomainに置き、DB接続失敗はinfrastructureで変換する。
図:ドメインを技術詳細から守る境界
ドメインモデル
業務の言葉・ルール・ID・例外
↑ Repository interface / Port ↑
DBモデル
テーブル・ORM制約
Mapper
保存形式へ変換
外部サービス
API・メッセージング