9

Struts、Spring、および Hibernate を使用してアプリケーションを開発しています。

私のDAOはSpring jdbcを使用しており、そのすべてのメソッドがDataAccessException(チェックされていない)をスローします。

この例外はどこで処理すればよいですか? 私はそれがチェックされていない例外であることを知っていますが、データベースまたは接続に問題があるかどうかをユーザーに伝える必要があると思います.

サービス クラス メソッドから DataAccessException を再スローして、Controller でキャッチする必要があると思います。これは良い習慣ですか?

Spring パッケージのサンプルを調べたところ、ドメインまたはサービス領域で例外処理が見つかりませんでした。dao 領域を離れた後、DataAccessException は無視されるようです。

この件について良いデザインを提案してください。

4

2 に答える 2

13

dao 領域を離れた後、DataAccessException は無視されるようです。

そして、それは良いことです!スタック全体に飛ばします。おそらくサービスレイヤーにトランザクションがあります-例外により、最も外側のトランザクションが透過的にロールバックされます。すごい!

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

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

ご覧のとおり、多くのレベルで例外を制御できますが、通常は低いほど優れています。

于 2012-05-20T11:58:41.340 に答える