异常处理
使用@ControllerAdvice+@ExceptionHandler处理异常
所用注解
@ControllerAdvice+@ResponseBody+@ExceptionHandler
作用
1. @ControllerAdvice 标注在类上面 表名所有的使用 @Controller 注解的类,也就是所有的Controller层
2. @ResponseBody返回信息
3. @ExceptionHandler()括号里可以声明需要处理的异常,可以对不可知异常和业务异常进行区分,做特殊处理。
代码编写
1. 声明全局异常处理类
@ControllerAdvice
public class GlobalExceptionHandler {
}
2. 在异常处理类中定义对异常的处理方式
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 指定异常的处理
* @param request
* @param e
* @return
*/
@ResponseBody
@ExceptionHandler(value= {XXXException.class})
public Object XXXException(HttpServletRequest request, Exception e){
//具体的处理措施
}
/**
* 针对不可知的异常
* @param request
* @param e
* @return
*/
@ResponseBody
@ExceptionHandler(value= {Exception.class})
public Object XXXException(HttpServletRequest request, Exception e){
//具体的处理措施
if(e instancof XXXException){
}
//...其他异常处理
}
//...其他异常方法
}