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

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

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

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

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

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

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

ドメインエキスパートに相談する必要も出てくる