これは何?
- Java言語を利用した業務システムの例外についての考えをまとめたもの
- 0から考え出した、というより見聞きした結果をまとめたもの
- メモなのであまり丁寧に書かない。
Javaの例外
- チェック例外
- 非チェック例外
どちらを使っても良いが、業務ロジックの中であらゆる例外を try-catch しているとめんどくさいので、非チェック例外でやった方が楽ちんな気がしている。(コード量が減る、関心のある例外のみハンドリングすれば良い。が、ハンドリングしたい例外を明示したい(強制させたい事情が絶対的にある)場合は、チェック例外とすべき場合もある?)
というものの、チェック例外・非チェック例外をどうするか論争は色々あるので、ここでは踏み込まず、必要であれば設計時に注意することにする。(提供側の視点、利用する側の視点・アプリの要件などのバランスで考える)
業務観点の例外
- 業務が継続できる(何かやり方を変えることで業務ができるようになる(入力値を直すなど)エラー。利用者はなにか回避しようがあるケース。)
- 単純な例外送出: 普通の throw XxxxException 的なやつ。
- 警告の類いの例外: 「○○ができてないけど本当に登録していいの?」みたいな警告を出すだけで、業務フローは継続できるようにしたいといった場合に対応する例外。
- 一気にたくさん出す例外: 「入力」→「確認」→「修正」ごとに逐一例外出されてはうざいので、「言いたいことは全部言って欲しい!」といった場合、例外を一気に出したい場合がある。こういうケースに対応する例外。
- 業務が継続できない例外(DBに繋がらないとか、相手先システムに繋がらないとか、そもそもシステムを動かすことができなくなるエラー。利用者は何もしようがないケース。)
これらの例外をチェック例外・非チェック例外どっちで実現するかを考える。