异常处理
程序异常现象
HandlerExceptionResolver接口(异常处理器)
异常分类管理
- 根据异常的种类不同,进行分类的管理,返回不同的信息
使用注解实现异常分类管理
- 名称:@ControllerAdvice
- 类型:类注解
- 位置:异常处理器类上方
- 作用:设置当前类为异常处理器类
- 范例:
@Component
@ControllerAdvice
public class ExceptionAdvice {
}
使用注解实现异常分类管理二
- 名称:@ExceptionHandler
- 类型:方法注解
- 位置:异常处理器类中针对制定异常进行处理的方法上方
- 作用:设置指定异常的处理方式
- 范例:
- 说明:处理器方法可以设定多个
两种异常处理方式对比
- 注解处理器可以拦截到入参类型转换异常
- 非注解处理器无法拦截到入参类型转换异常
项目异常处理方案
- 异常分类
- 业务异常:
- 规范的用户行为产生的异常
- 不规范的用户行为操作产生的异常
- 系统异常
- 项目运行过程中可预计且无法避免的异常
- 其他异常
- 编程人员未预期到的异常
- 业务异常:
自定义异常
- 异常定义格式
public class BusinessException extends RuntimeException {
public BusinessException() {
super();
}
//覆盖父类所有的构造方法,转调父类构造方法
}
- 异常触发方式
if(user.getName().trim().length()<4) {
throw new BusinessException("用户名长度必须在2-4位之间,请重新输入!");
}
- 通过自定义异常将所有的异常现象进行分类管理,以统一的格式对外呈现异常消息