1. ホーム
  2. java

[解決済み] EmptyResultDataAccessExceptionをキャッチする必要がありますか?

2022-02-16 10:53:33

質問

主キーを渡しているため、1行を返すと予想されるSQL文があります。 そこで、私の選択肢は次のとおりです。

  1. ラップ queryForObject を try/catch で捕らえ、EmptyResultDataAccessException を捕らえ、null を返します。
  2. の呼び出しを変更する。 queryForList そして、リストをアンラップして、(うまくいけば)1番目の要素、またはnullを返します。

EmptyResultDataAccessExceptionは実行時例外を拡張しているので、キャッシングは悪い習慣であるとどこかで読みました。

でも、何も問題はないと思うのですが。

ご意見を伺いたいと思います。

解決方法は?

私がこの問題に遭遇したほとんどの場合(mvc/ws)、私は例外をスローさせますが、例外リゾルバで例外を処理します。 nullを返すことの問題は、アプリケーションがそれに依存しており、さらにその先で、それがあると予想される時点ではなく、後でnullチェックをしなければならないことです。 これは、すべての開発者が必要なときにnullチェックを行うとは限らず、後でnpeに遭遇する可能性があるため、問題を引き起こす可能性があります。 どのようなアプリケーションを書くかによりますが、例外リゾルバを使って例外をキャッチして処理する方法がいくつかあります。 例外リゾルバを使用することで、それぞれの例外を異なる方法で処理し、ユーザーにフィードバックを提供することができます。

ここでは、spring mvcを使った方法の一つを紹介します。 この方法では、主キーを持つオブジェクトが存在しない場合、ユーザーに対して一般的なメッセージを出すことができます。 http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-example/