对于全局异常需要认识两个注解
@RestControllerAdvice,@ExceptionHandler
1、 @RestControllerAdvice
组成:@ControllerAdvice、@ResponseBody
@RestControllerAdvice特点:
(1)通过@ControllerAdvice注解可以将对于控制器的全局配置放在同一个位置,他可以管理所有的Controller。
(2)注解了@RestControllerAdvice的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上。
(3)@RestControllerAdvice注解将作用在所有注解了@RequestMapping的控制器的方法上。
(4)@ExceptionHandler:用于指定异常处理方法。当与@RestControllerAdvice配合使用时,用于全局处理控制器里的异常。
(5)
-
@InitBinder:用来设置WebDataBinder,用于自动绑定前台请求参数到Model中。
-
@ModelAttribute:本来作用是绑定键值对到Model中,当与@ControllerAdvice配合使用时,可以让全局的@RequestMapping都能获得在此处设置的键值对**
2、@ExceptionHandler注解我们一般是用来自定义异常的。
可以认为它是一个异常拦截器(处理器)。
@ExceptionHandler(xxx.class)
xxx.class是具体的异常类
例如:NullPointerException
例子
全局异常捕获
自定义异常类
自定义异常类继承RuntimeException
public class Mall4cloudException extends RuntimeException {
private static final long serialVersionUID = 1L;
private Object object;
private ResponseEnum responseEnum;
public Mall4cloudException(String msg) {
super(msg);
}
public Mall4cloudException(String msg, Object object) {
super(msg);
this.object