@ControllerAdvice Spring3.2提供的新注解,Controller增强器
可对controller层中被
@RequestMapping
注解了的方法增加逻辑处理
常用于
统一异常处理、全局数据绑定、全局数据预处理
@ExceptionHandler 标记异常处理,可指定具体异常类型class
@ResponseBody 指定异常返回
@Slf4j 控制台log打印
其中,
ControllerAdvice和Slf4j
作用于类,
ExceptionHandler和ResponseBody
作用于方法,
在多个异常方法重载时,会根据具体发生的Exception进不同的方法
以下是全局异常统一处理的使用样例:
定义全局异常处理类
@Slf4j @ControllerAdvice public class GlobalException {
@ResponseBody @ExceptionHandler(Exception.class) public BaseBean<String> exception(Exception e) { log.error("全局异常:" + e); return BaseBean.failed("全局异常:" + e.getMessage()); }
@ResponseBody @ExceptionHandler(NullPointerException.class) public BaseBean<String> exception(NullPointerException e) { log.error("全局空指针异常:" + e); return BaseBean.failed("全局空指针异常:" + e.getMessage()); } }
|
当程序发生异常
throw new NullPointerException("测试空指针异常");
|
被捕获后返回json
{ "data": null, "code": 110, "msg": "全局空指针异常:测试空指针异常", "success": false }
|