8

過去数か月間、Spring + hibernate で Web アプリを開発してきました。私が真剣に欠けているのは、例外処理です。

例外を処理するための最良のアプローチとプラクティスを知りたいですか? 次のような例外処理のすべての側面をカバーできないいくつかの質問があります。

1.チェック例外にするかチェックしない例外にするか?どうやって決める?

2.コントローラーで発生した例外の処理方法と対処方法。

3.サービス層やDAO層で発生した例外は、その層だけで処理するべきか、それともコントローラー層に渡すべきか?

4.多くの例外が存在する可能性があるため、将来発生する可能性のある例外に対処するにはどうすればよいですか?

5.関連するメッセージを UI またはブラウザに表示するにはどうすればよいですか?

良いブログへのリンクを提案または提供してください。

4

2 に答える 2

12
  1. クライアントが例外を処理して回復できるという合理的な期待がある場合は、Checked Exceptions を使用します。
  2. @ExceptionHandlerメソッドでアノテーションを使用して、メソッドから生成された例外を処理し@RequestMappingます。
  3. throwサービスメソッドが実際に例外から回復し、通常どおり処理を続行できない限り、それらをコントローラーに送信して、最良の応答を決定できるようにします。
  4. カスタム例外を作成しthrow、代わりにそれらを作成します (実際の例外を原因として渡すことができますthrow new MyCustomException("my message", e)) 。
  5. メソッド@ExceptionHandlerでユーザーに返すビューを決定したり、カスタム エラー ページを設定したりできます。web.xml
于 2013-08-29T11:59:38.907 に答える
5
  1. 一般に、チェック済み例外を使用しないでください。フロー制御に例外を使用したくありません。その次に、ほとんどの例外は回復不能です。では、どうしますか? この関連する回答を参照してください。

  2. 例外処理に関しては、Spring にはそのHandlerExceptionResolverためのがあります。これは、一般的な例外処理に使用できます。よりきめ細かい制御を行うには、コントローラーのメソッドにアノテーションを付けて@ExceptionHandler、そのコントローラーからのみ発生する例外を処理するようにします。(ただし、新しい@ControllerAdviceを使用すると、グローバル@ExceptionHandlerメソッドを登録することもできます。

  3. 場合によっては、コントローラーで例外をキャッチし、コントローラー内で処理したい場合があります (つまり、ユーザーに警告を表示するなど)。

最後の手段として、error-page非常に一般的で幅広い例外処理のために web.xml で をいつでも構成できます。

詳細については、Spring Reference Guideの例外処理セクションを確認してください。

于 2013-08-29T12:07:42.520 に答える