🐷
エラーの分類
-
『関数型ドメインモデリング』 を読んで、自分の中で漠然としていた考えが明確になったのでメモ
- 第 10 章 2 節に記載あり
問題意識
- システムで発生し得る問題をどのように扱えば、ユーザーと開発者の双方にとって分かりやすくなるか
対応方針
- 問題を以下の 3 つに分類し、それぞれに適切な対処を行う
ドメインエラー
- ビジネスプロセスの一部として処理すべきエラー
- 例: 発生時にユーザーへ情報を提示する必要があるケース
- ワークフロー内で適切な対処が実施される
- ドメインの一部であり、可能であれば型システムで文書化されるべき
パニック
- 処理が不可能なシステムエラー
- 例: メモリ不足や null 参照
- ワークフローを放棄し、例外を発生させる
- 発生した例外は適切かつ最も高いレベルで補足されるべき
インフラストラクチャエラー
- ビジネスプロセスの一部ではないが、アプリケーションで発生し得るエラー
- 例: ネットワークタイムアウトや認証失敗
- ワークフロー内で処理する手段も、ワークフローを放棄する手段も選択可能
- 多くの場合、インフラストラクチャエラーはドメインエラーと同様に扱う方が有用
- 問題が発生した際にユーザーへ影響がある場合は、ビジネスプロセスに含めるべき可能性がある
- そのような問題については、プロダクトオーナーを含めて対処方法を検討する必要がある
- 問題が発生した際にユーザーへ影響がある場合は、ビジネスプロセスに含めるべき可能性がある
Discussion