8
例外:なぜ早く投げるのですか?なぜ遅れるのか?
単独での例外処理に関する多くの有名なベストプラクティスがあります。「やるべきこと」は十分に知っていますが、大規模な環境でのベストプラクティスやパターンに関しては複雑になります。「早く投げて、遅れて捕まえる」-私は何度も聞いたことがありますが、それでも私を混乱させます。 低レベル層でNULLポインター例外がスローされる場合、なぜ早くスローしてキャッチする必要があるのですか?なぜ上位のレイヤーでキャッチする必要があるのですか?ビジネスレイヤーなど、高レベルで低レベルの例外をキャッチするのは意味がありません。各層の懸念に違反しているようです。 次の状況を想像してください。 数値を計算するサービスがあります。この数値を計算するために、サービスはリポジトリにアクセスして生データを取得し、他のサービスが計算を準備します。データ取得レイヤーで何か問題が発生した場合、なぜDataRetrievalExceptionをより高いレベルにスローする必要があるのですか?対照的に、CalculationServiceExceptionなどの意味のある例外に例外をラップすることをお勧めします。 なぜ早く投げ、なぜ遅くキャッチするのですか?