Open7

関数型ドメインモデリング

caltistalscaltistals

第10章 実装: エラーの扱い

caltistalscaltistals

エラーは以下の3つのグループに分類できる

  • ドメインエラー
    • ビジネスプロセスの一部として予想されるエラー
    • 例) 請求の段階で却下された注文、無効な製品コードを含む注文など
  • パニック
    • 処理不可能なシステムエラーやプログラマーの見落としによるエラー
  • インフラストラクチャエラー
    • アーキテクチャの一部として予想されるエラー
    • ビジネスプロセスの一部ではない
    • 例) ネットワークタイムアウト、認証失敗
caltistalscaltistals

ドメインエキスパートに聞いてみて、「???」となればそれはドメインエラーではない

caltistalscaltistals

ドメインエラーはドメインモデリングに組み込まれる
可能であれば型システムで文書化されるべき

caltistalscaltistals

パニックはワークフローを放棄し例外を発生させ、適切かつもっとも高いレベル(main関数など)で補足するべき

caltistalscaltistals

インフラストラクチャエラーはどちらの方法でも処理可能
多くのインフラストラクチャエラーはドメインエラーと同様に扱う方が多くの場合で役に立つ