- 作者:柯基大佬
- 日期:2021-10-20
- 类型:Java
- 说明:本文源于 柯基 手写摘要,如需转载请带上链接或注明出处!
全局异常处理
注:使用Mybatis自带的异常处理
简单异常处理
用到的注解:
- @ControllerAdvice Spring3.2提供的新注解,Controller增强器
可对controller层中被 @RequestMapping
注解了的方法增加逻辑处理
常用于 统一异常处理、全局数据绑定、全局数据预处理
- @ExceptionHandler 标记异常处理,可指定具体异常类型class
- @ResponseBody 指定异常返回
- @Slf4j 控制台log打印
其中,ControllerAdvice和Slf4j
作用于类,ExceptionHandler和ResponseBody
作用于方法,
在多个异常方法重载时,会根据具体发生的Exception进不同的方法
以下是全局异常统一处理的使用样例:
定义全局异常处理类
// log 4j
public class GlobalException {
// 返回异常
(Exception.class)
public BaseBean<String> exception(Exception e) {
log.error("全局异常:" + e);
return BaseBean.failed("全局异常:" + e.getMessage());
}
(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
}
自定义异常处理
使用枚举类自定义常用响应码(code, msg)
将定义的code替换掉项目里原有的硬编码code
public enum ResponseCode { |