对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
异常
@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
被抛出)或针对顶级包装器中的直接原因
异常(例如,一个IOException
包裹在一个IllegalStateException
).
对于匹配的异常类型,最好将目标异常声明为方法参数,
如前面的示例所示。或者,注释声明可以缩小
异常类型。我们通常建议在
参数签名,并在@ControllerAdvice
以相应的顺序优先。
有关详细信息,请参阅 MVC 部分。
一@ExceptionHandler 方法支持相同的方法参数和
返回值作为@RequestMapping 方法,但请求正文除外-
和@ModelAttribute -related 方法参数。 |
对@ExceptionHandler
Spring WebFlux 中的方法由HandlerAdapter
为@RequestMapping
方法。看DispatcherHandler
了解更多详情。
方法参数
@ExceptionHandler
方法支持与@RequestMapping
方法,但请求正文可能已经被使用。
返回值
@ExceptionHandler
方法支持与@RequestMapping
方法。