往期文章:
Spring 学习总结笔记【一、快速入门】
Spring 学习总结笔记【二、IoC-控制反转】
Spring 学习总结笔记【三、注解开发】
Spring 学习总结笔记【四、整合Junit】
Spring 学习总结笔记【五、配置数据源】
Spring 学习总结笔记【六、整合Mybatis】
Spring 学习总结笔记【七、AOP面向切面编程】
Spring 学习总结笔记【八、集成Web环境】
Spring 学习总结笔记【九、SpringMVC快速入门】
Spring 学习总结笔记【十、SpringMVC数据响应与请求】
Spring 学习总结笔记【十一、SpringMVC拦截器】
Spring 学习总结笔记【十二、Spring事务管理】
-
程序开发过程中不可避免的会遇到异常现象
-
所有的异常均抛出到表现层进行处理
-
表现层处理异常,若每个方法单独书写会导致代码量巨大,可使用 AOP 思想解决
-
异常处理器
集中的、统一的处理项目中出现的异常
异常处理开发步骤
① 新建异常处理类,并在类上标注注解 @ControllerAdvice
(若为 RESTful风格则使用 @RestControllerAdvice
)
@RestControllerAdvice
public class ProjectExceptionAdvice {
}
② 在异常处理类中编写方法处理异常并标注注解 @ExceptionHandler
@RestControllerAdvice
public class ProjectExceptionAdvice {
// 标注该方法处理什么种类的异常
@ExceptionHandler(Exception.class)
public void doException(Exception ex){
System.out.println("出现异常了...");
}
}
③ 在 Spring 配置类中扫描异常处理器所在包
因为我将我的异常处理类放在 controller 包下,所以我直接扫描 controller 包
项目异常处理方案
- 项目异常分类
① 业务异常(BusinessException):
- 规范的用户行为产生的异常
- 不规范的用户行为操作产生的异常
解决:
- 发送对应消息传递给用户,提醒规范操作
② 系统异常(SystemException):
- 项目运行过程中可预计且无法避免的异常
解决:
- 发送固定消息传递给用户,安抚用户
- 发送特定消息给运维人员,提醒维护
- 记录日志
③ 其他异常(Exception):
- 编程人员未预期到的异常
解决:
- 发送固定消息传递给用户,安抚用户
- 发送特定消息给编程人员,提醒维护(纳入预期范围内)
- 记录日志
自定义异常类
自定义异常类继承 RuntimeException,并实现所有的构造方法
public class BusinessException extends RuntimeException{
private Integer code;
public BusinessException(Integer code, String message) {
super(message);
this.code = code;
}
public BusinessException(Integer code, String message, Throwable cause) {
super(message, cause);
this.code = code;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
下期文章: