アノテーションインターフェース ExceptionHandler
@TargetSE(METHODSE)
@RetentionSE(RUNTIMESE)
@DocumentedSE
@Reflective(org.springframework.web.bind.annotation.ExceptionHandlerReflectiveProcessor.class)
public @interface ExceptionHandler
特定のハンドラークラスやハンドラーメソッドで例外を処理するためのアノテーション。
このアノテーションが付けられたハンドラーメソッドは、非常に柔軟な署名を持つことができます。次の型のパラメーターを任意の順序で持つことができます。
- 例外引数: 一般的な例外、またはより具体的な例外として宣言されています。アノテーション自体が
value()によって例外の種類を絞り込んでいない場合、これはマッピングのヒントとしても機能します。伝播されるトップレベルの例外、またはラッパー例外内のネストされた原因を参照できます。すべての原因レベルが公開されます。 - リクエストオブジェクトおよび/またはレスポンスオブジェクト(通常はサーブレット API から取得)。リクエスト/レスポンスの種類は任意に選択できます(例:
ServletRequest/HttpServletRequest)。 - セッションオブジェクト: 通常は
HttpSessionです。この型の引数は、対応するセッションの存在を強制します。このような引数がnullになることはありません。 特にサーブレット環境では、セッションアクセスがスレッドセーフではない可能性があることに注意してください。複数のリクエストが同時にセッションにアクセスすることを許可されている場合は、"synchronizeOnSession"フラグを "true" に切り替えることを検討してください。 WebRequestまたはNativeWebRequestネイティブサーブレット API に関係なく、汎用のリクエストパラメーターアクセスとリクエスト / セッション属性アクセスを許可します。- 現在のリクエストロケールの
LocaleSE(利用可能な最も具体的なロケールリゾルバー、つまり、サーブレット環境で構成されたLocaleResolverによって決定されます)。 - リクエストのコンテンツにアクセスするための
InputStreamSE/ReaderSE。これは、サーブレット API によって公開される生の InputStream/ リーダーになります。 - レスポンスのコンテンツを生成するための
OutputStreamSE/WriterSE。これは、サーブレット API によって公開された生の OutputStream/Writer になります。 - ハンドラーメソッドからモデルマップを返す代わりとしての
Model。例外固有のビュー用にモデルを準備するのに便利なように、提供されたモデルには通常のモデル属性が事前に設定されておらず、常に空であることに注意してください。
ハンドラーメソッドでは、次の戻り値の型がサポートされています。
ModelAndViewオブジェクト (Servlet MVC から)。Modelオブジェクト。ビュー名はRequestToViewNameTranslatorを通じて暗黙的に決定されます。- モデルを公開するための
MapSE オブジェクト。ビュー名はRequestToViewNameTranslatorを通じて暗黙的に決定されます。 Viewオブジェクト。- ビュー名として解釈される
StringSE 値。 @ResponseBodyアノテーション付きメソッド (サーブレットのみ) は、レスポンスコンテンツを設定します。戻り値は、メッセージコンバーターを使用してレスポンスストリームに変換されます。HttpEntity<?>またはResponseEntity<?>オブジェクト(サーブレットのみ)を使用して、レスポンスヘッダーとコンテンツを設定します。ResponseEntity ボディはメッセージコンバーターを使用して変換され、レスポンスストリームに書き込まれます。- 本文に詳細を含む RFC 9457 エラーレスポンスをレンダリングする
ProblemDetailまたはErrorResponseオブジェクト。 - メソッドがレスポンス自体を処理する場合(レスポンスの内容を直接書き込んで、そのために型
ServletResponse/HttpServletResponseの引数を宣言する)またはビュー名がRequestToViewNameTranslatorを通じて暗黙的に決定されることになっている場合(ハンドラーメソッドシグネチャーでレスポンス引数を宣言しない)はvoidです。
特定の HTTP エラーステータスについて、ExceptionHandler アノテーションと @ResponseStatus を組み合わせることができます。
- 導入:
- 3.0
- 作成者:
- Arjen Poutsma, Juergen Hoeller, Brian Clozel
- 関連事項:
オプション要素の概要
オプション要素修飾子と型オプションの要素説明ClassSE<? extends ThrowableSE>[]アノテーション付きメソッドによって処理される例外。StringSE[]アノテーション付きの方法で生成できるメディア型。ClassSE<? extends ThrowableSE>[]アノテーション付きメソッドによって処理される例外。
要素の詳細
value
アノテーション付きメソッドによって処理される例外。これは
exception()の別名です。- デフォルト:
{}
exception
アノテーション付きメソッドによって処理される例外。空の場合、メソッド引数リストにリストされている例外がデフォルトになります。- 導入:
- 6.2
- デフォルト:
{}
produces