web-dev-qa-db-ja.com

DataAccessExceptionとSQLException

Springフレームワークでの例外処理に関して2つの質問があります。

  1. コアJavaのDataAccessExceptionがチェック例外であるのに対し、SpringフレームワークのSQLExceptionはランタイム例外なのはなぜですか?

  2. Springの例外処理は、Javaの例外処理メカニズムよりも優れていますか?

16
Nital

DataAccessExceptionよりもSQLExceptionを使用する理由は、より一般的に問題を説明するためです。 Oracle用とCassandra用の2つの異なる実装を持つリポジトリーまたはDAOインターフェースがある場合、両方の実装でこの1つの例外が障害を表す可能性があります。

なぜこれがランタイムであり、チェック済みの例外ではないのかについては、呼び出し側が明示的に処理する必要がないようにします。私の経験では、SQLExceptionまたはDataAccessExceptionがスローされた場合、それができる誰かにバブルアップさせる以外に、私ができることややりたいことはあまりないようです。各レイヤーでスロー可能オブジェクトを宣言する必要があると、呼び出し側の負担が大きくなります。それらの1つがそれをキャッチして処理することを希望する場合、それらは可能です。

ここにJavaDocsがあります(ありがとう@Tom!)

  1. DataAccesssException
  2. SQLException
15
Todd