フレームワークが提供する例外を使用することは悪い習慣と見なされますか? 私はSpring JDBCを使用していますが、このIncorrectResultSizeDataAccessException例外を見つけました。これはまさに私が望んでいることです。リポジトリ層から投げます。リポジトリとサービス レイヤーは、私が Spring を使用していることを既に認識しています。
一般に、このような独自の例外を作成しますか、それともフレームワークが提供する例外が使用できる場合はそれに依存しますか?
フレームワークが提供する例外を使用することは悪い習慣と見なされますか? 私はSpring JDBCを使用していますが、このIncorrectResultSizeDataAccessException例外を見つけました。これはまさに私が望んでいることです。リポジトリ層から投げます。リポジトリとサービス レイヤーは、私が Spring を使用していることを既に認識しています。
一般に、このような独自の例外を作成しますか、それともフレームワークが提供する例外が使用できる場合はそれに依存しますか?
自分のコードで Spring コードの依存関係を作成しません。実装を Spring に依存させることは 1 つのことです。サード パーティのフレームワークへの依存を強制する API を作成すると、API を介して実装の詳細が単純に流出します。
まず、ユース ケースに適合する標準の Java 例外があるかどうかを確認し、そうでない場合は、カスタム 例外を作成します。
いくつかの理由から、独自に定義した例外を使用することに頼っています。
私が見る唯一の欠点は、サードパーティのフレームワークの例外をアプリケーション固有の例外にラップしてしまう可能性があることです...
try
{
//...do something...
}
catch(SQLException e)
{
throw new MyAppException(e);
}
それを使用することが実際に悪い習慣になる理由はわかりません。独自の例外を作成するよりも、既存の例外をスローすることをお勧めします (したがって、例外が発生した場合に、あなたや他の人がより簡単に理解できるようになります)。
サービス層はすでに Spring を使用しているため、既存の Spring-JDBC 例外を使用することは合理的と思われます。最大の問題は、使用方法が Spring の使用方法と一致していない場合、混乱を招く可能性があることです。
Spring JDBC を使用している場合、既に Spring コードに依存しています。例外を再利用すると、例外処理がより均一に保たれます。
これは意見の問題であり、プログラマーのスタック交換に適していると思います。しかし、IMO、それは大丈夫です。IllegalArgumentExceptionなどのJavaが提供する例外を除いて、私は常にそれを行っています。フレームワークも再利用してみませんか?
私が考えることができる欠点は、プロジェクトでSpringを置き換える場合、その例外を置き換える必要があるのは少し奇妙なことです。しかし、そもそもそうする可能性は低いと思います。
また、他のレイヤーは例外を処理する必要があるため、Springコードをそれらのレイヤーに公開します(パッケージ内の「spring」を含む例外をインポートする必要があるため)。これは欠点になる可能性があります。しかし、それは例外の再利用に対する議論というよりも、例外に対する議論かもしれません。