作用

  • 在代码中使用自定义的异常类,可以对异常进行统一的封装处理,使得整个项目的异常处理更规范、更统一、更优雅。同时,使得日志的记录上更加清晰,便于后续查看日志定位问题。

    步骤

  • 需要自定义异常类,继承自系统的异常类。具体需要什么样类型的异常类,就继承自 相应的系统类。

    • 如果你想写一个检查性异常,则需要继承自Exception类
    • 如果你想写一个运行时异常,需要继承自RuntimeException

      public class BusinessException extends Exception {
          private int errCode;
          private String errMsg;
      
          //无参构造
          public BusinessException() {
          }
      
          //错误描述和错误代码
          public BusinessException(int errCode, String errMsg) {
              super(errMsg);
              this.errCode = errCode;
              this.errMsg = errMsg;
          }
      
          public int getErrCode() {
              return errCode;
          }
      
          public String getErrMsg() {
              return errMsg;
          }
      }
      
  • 在需要抛出该异常的类或方法中,定义当出现异常时抛出自定义异常类。

    if(!matche){
    //抛出一个自定义异常给上级,由方法调用者捕获
    throw new BusinessException(ReturnCode.CODE_FAIL,"电话格式错误!");
    //异常一抛,方法结束
    }
    
  • 在使用到该类或方法的地方捕捉该异常(或继续抛出,交给上级去处理),并对异常进行业务相关的响应与处理。

    try {
        result=resolveExcelService.resolveExcel(file);
    } catch (BusinessException e) { //捕获异常
        e.printStackTrace(); //后台打印
        return ApiResponse.failOf(-1,e.getErrMsg()); //这个类能在前端展示异常类的错误描述
    }
    

    代码实例

  • SpringMvc02/controller/ResolveExcelController,domain/ApiResponexcelse、BusinessException,service/ResolveExcelServiceImpl、ResolveExcelService