Springフレームワークでの例外処理に関して2つの質問があります。
コアJavaのDataAccessException
がチェック例外であるのに対し、SpringフレームワークのSQLException
はランタイム例外なのはなぜですか?
Springの例外処理は、Javaの例外処理メカニズムよりも優れていますか?
DataAccessException
よりもSQLException
を使用する理由は、より一般的に問題を説明するためです。 Oracle用とCassandra用の2つの異なる実装を持つリポジトリーまたはDAOインターフェースがある場合、両方の実装でこの1つの例外が障害を表す可能性があります。
なぜこれがランタイムであり、チェック済みの例外ではないのかについては、呼び出し側が明示的に処理する必要がないようにします。私の経験では、SQLException
またはDataAccessException
がスローされた場合、それができる誰かにバブルアップさせる以外に、私ができることややりたいことはあまりないようです。各レイヤーでスロー可能オブジェクトを宣言する必要があると、呼び出し側の負担が大きくなります。それらの1つがそれをキャッチして処理することを希望する場合、それらは可能です。
ここにJavaDocsがあります(ありがとう@Tom!)