SpringMVC异常处理

将异常映射为状态码

  1. 定义一个异常类
  2. @ResponseStatus注解标注异常类。

@ResponseStatus接受两个参数:

  • value, 表示状态码
  • reason, 表示原因

当应用抛出@ResponseStatus注解标注的异常类时,SpringMVC会将异常映射为状态码

手动处理异常——单控制器异常处理

  1. 如果某控制器抛出异常需要处理,则在此控制器里定义一个异常处理方法
  2. @ExceptionHandler注解标注异常处理方法

@ExceptionHandler需要传入特定异常类作为参数。当控制器某个方法抛出异常,@ExceptionHandler方法将捕获并处理这个异常。

这种处理方法的缺点是,它只能处理单一控制器抛出的异常。如果多个控制器抛出相同的异常,则必须在每个控制器中定义@ExceptionHandler方法才能处理异常

手动处理异常——多控制器异常处理

  1. 定义控制器通知类(使用@ControllerAdvice注解表注 标注)
  2. 编写处理方法

处理方法通过@ExceptionHandler@InitBinder@ModelAttribute注解标注

@ControllerAdvice注解本身已经使用了@Component,因此@ControllerAdvice注解所标注的类将会自动被组件扫描获取到

原文地址:https://www.cnblogs.com/weixia-blog/p/12148772.html