最新の安定バージョンについては、Spring Framework 7.0.2 を使用してください! |
例外
@Controller および @ControllerAdvice クラスには、コントローラーメソッドからの例外を処理する @ExceptionHandler メソッドを含めることができます。次の例には、このようなハンドラーメソッドが含まれています。
Java
Kotlin
@Controller
public class SimpleController {
// ...
@ExceptionHandler (1)
public ResponseEntity<String> handle(IOException ex) {
// ...
}
}
| 1 | @ExceptionHandler の宣言。 |
@Controller
class SimpleController {
// ...
@ExceptionHandler (1)
fun handle(ex: IOException): ResponseEntity<String> {
// ...
}
}
| 1 | @ExceptionHandler の宣言。 |
例外は、伝播されるトップレベルの例外(つまり、直接 IOException がスローされる)、トップレベルのラッパー例外内の直接の原因(たとえば、IllegalStateException 内にラップされた IOException)に一致します。
例外型を一致させるには、前の例に示すように、ターゲット例外をメソッド引数として宣言することが望ましいです。あるいは、アノテーション宣言により、一致する例外型を絞り込むこともできます。一般に、引数のシグネチャーをできるだけ具体的にし、対応する順序で優先順位を付けた @ControllerAdvice 上でプライマリルート例外マッピングを宣言することをお勧めします。詳細については、"MVC" セクションを参照してください。
WebFlux の @ExceptionHandler メソッドは、@RequestMapping メソッドと同じメソッド引数と戻り値をサポートしていますが、リクエスト本体および @ModelAttribute 関連のメソッド引数は例外です。 |
Spring での @ExceptionHandler メソッドのサポート WebFlux は、@RequestMapping メソッドの HandlerAdapter によって提供されます。詳細については、DispatcherHandler を参照してください。
メソッド引数
@ExceptionHandler メソッドは、@RequestMapping メソッドと同じメソッド引数をサポートしますが、リクエスト本文がすでに使用されている可能性があります。
戻り値
@ExceptionHandler メソッドは、@RequestMapping メソッドと同じ戻り値をサポートします。