アノテーションインターフェース ExceptionHandler


@TargetSE(METHODSE) @RetentionSE(RUNTIMESE) @DocumentedSE @Reflective(org.springframework.web.bind.annotation.ExceptionHandlerReflectiveProcessor.class) public @interface ExceptionHandler
特定のハンドラークラスやハンドラーメソッドで例外を処理するためのアノテーション。

このアノテーションが付けられたハンドラーメソッドは、非常に柔軟な署名を持つことができます。次の型のパラメーターを任意の順序で持つことができます。

  • 例外引数: 一般的な例外またはより具体的な例外として宣言されています。これは、アノテーション自体が value() を介して例外型を絞り込まない場合のマッピングヒントとしても機能します。伝播されている最上位の例外、またはラッパー例外内のネストされた原因を参照できます。5.3 では、あらゆる原因レベルが公開されていますが、以前は直接的な原因のみが考慮されていました。
  • リクエストおよび / またはレスポンスオブジェクト(通常はサーブレット API から)。特定のリクエスト / レスポンス型を選択できます。ServletRequestEE/HttpServletRequestEE
  • セッションオブジェクト: 通常 HttpSessionEE。この型の引数は、対応するセッションの存在を強制します。結果として引数は決して null になりません。 特にサーブレット環境では、セッションアクセスはスレッドセーフではない可能性があることに注意してください。複数のリクエストがセッションに同時にアクセスできる場合、"synchronizeOnSession" フラグを "true" に切り替えることを検討してください。
  • WebRequest または NativeWebRequest ネイティブサーブレット API に関係なく、汎用のリクエストパラメーターアクセスとリクエスト / セッション属性アクセスを許可します。
  • 現在のリクエストロケールの LocaleSE(利用可能な最も具体的なロケールリゾルバー、つまり、サーブレット環境で構成された LocaleResolver によって決定されます)。
  • リクエストのコンテンツにアクセスするための InputStreamSE/ReaderSE。これは、サーブレット API によって公開される生の InputStream/ リーダーになります。
  • レスポンスのコンテンツを生成するための OutputStreamSE/WriterSE。これは、サーブレット API によって公開された生の OutputStream/Writer になります。
  • ハンドラーメソッドからモデルマップを返す代わりとしての Model。例外固有のビュー用にモデルを準備するのに便利なように、提供されたモデルには通常のモデル属性が事前に設定されておらず、常に空であることに注意してください。

ハンドラーメソッドでは、次の戻り値の型がサポートされています。

  • ModelAndView オブジェクト(サーブレット MVC から)。
  • RequestToViewNameTranslator を介して暗黙的に決定されたビュー名を持つ Model オブジェクト。
  • モデルを公開するための MapSE オブジェクト。ビュー名は RequestToViewNameTranslator を介して暗黙的に決定されます。
  • View オブジェクト。
  • ビュー名として解釈される StringSE 値。
  • @ResponseBody アノテーション付きメソッド (サーブレットのみ) は、レスポンスコンテンツを設定します。戻り値は、メッセージコンバーターを使用してレスポンスストリームに変換されます。
  • レスポンスヘッダーとコンテンツを設定するための HttpEntity<?> または ResponseEntity<?> オブジェクト (サーブレットのみ)。ResponseEntity 本文は、メッセージコンバーターを使用して変換され、レスポンスストリームに書き込まれます。
  • void メソッドがレスポンス自体を処理する場合(レスポンスコンテンツを直接記述し、その目的のために ServletResponseEE/HttpServletResponseEE 型の引数を宣言することにより)、またはビュー名が RequestToViewNameTranslator によって暗黙的に決定されることになっている場合(レスポンス引数を宣言しない場合)ハンドラーメソッドシグネチャー)。

特定の HTTP エラーステータスについて、ExceptionHandler アノテーションと @ResponseStatus を組み合わせることができます。

導入:
3.0
作成者:
Arjen Poutsma, Juergen Hoeller
関連事項:
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    ClassSE<? extends ThrowableSE>[]
    アノテーション付きメソッドによって処理される例外。
  • 要素の詳細

    • value

      ClassSE<? extends ThrowableSE>[] value
      アノテーション付きメソッドによって処理される例外。空の場合、メソッド引数リストにリストされている例外がデフォルトになります。
      デフォルト:
      {}