2012-05-20 3 views
7

Struts、Spring、およびHibernateを使用してアプリケーションを開発します。Springを処理する場所DataAccessException

私のDAOはspring jdbcを使用し、そのすべてのメソッドはDataAccessExceptionをスローします(これはチェックされていません)。

この例外はどこで処理すればよいですか?チェックされていない例外だが、dbまたは接続に問題があるかどうかをユーザーに伝える必要があると思う。

私はサービスクラスのメソッドからDataAccessExceptionを戻して、Controllerによってキャッチされるべきだと思います。 これは良い方法ですか?

私は春のパッケージからサンプルを見てきましたが、ドメインまたはサービスエリアで例外処理が見つかりませんでした。 DataAccessExceptionはDAO領域を離れた後に無視されるようです。

この問題の良いデザインを提案してください。

+0

[サービス層で直接Spring DataAccessExceptionを使用できますか?](http://stackoverflow.com/questions/10672879/can-i-use-spring-dataaccessexception-directly-in-service-layer) – Raedwald

答えて

13

dao領域から離れると、DataAccessExceptionが無視されたようです。

それは良いことです!積み重ね全体を飛んでいく。あなたはおそらくサービスレイヤー上のトランザクションを持っています - 例外は透過的に最も外側のトランザクションをロールバックさせます。すばらしいです!

これでコントローラーに移動します。あなたがStrutsコントローラでそれをキャッチした場合は、例えば次のようにすることができます。別のビューを返す。しかし、ほとんどの場合、Strutsの各アクションで例外を処理する必要はありません。したがって、例外をさらに下に飛ばすようにしてください。ある時点で、Strutsはその例外を捕捉し、それを処理しようとします。 Strutsにはいくつかの洗練されたエラー処理メカニズムがあります。それらについてたくさんの情報があります。通常、例外タイプに応じて、カスタムアクションまたはエラー画面が呼び出されます。

最後に、Strutsでも例外を処理できない場合は、コンテナに再スローされ、例外の詳細が返されたHTTP 503が発生します。

多くのレベルで例外を制御できますが、通常は低くする方が効果的です。

+0

これは優れた反応です。賞賛! – markthegrea