ページ一覧を開く

例外の配置

例外の配置とは

例外の配置とは、業務ルール違反や技術的失敗を表す型を、その失敗の意味を所有する層へ置くことです。ドメインの失敗とDB・通信の失敗を区別します。

例外クラスはどこに置く?

推奨

破られたルールの所有者と同じ層に置き、技術例外は境界でアプリケーション向けの失敗へ変換する。

なぜ

ドメインの失敗と通信・DBの失敗を区別すると、呼び出し側が意味に応じた処理を選べます。

判断基準

  • ドメイン例外は業務語彙で命名する
  • ORM例外をUIまで漏らさない
  • 予期できる不成立はResult型も検討する

BAD

すべてをBusinessException一種類に包み、原因や回復方法を失う。

GOOD

OrderAlreadyShippedをdomainに置き、DB接続失敗はinfrastructureで変換する。

図:ドメインを技術詳細から守る境界

ドメインモデル

業務の言葉・ルール・ID・例外

↑ Repository interface / Port ↑

DBモデル

テーブル・ORM制約

Mapper

保存形式へ変換

外部サービス

API・メッセージング

保存や通信の形をそのままドメインモデルへ持ち込みません。技術都合がドメインモデルを歪めるときは、境界で変換します。