SpringBoot框架 -- 自定义异常封装实现

SpringBoot框架 – 异常封装初始化

本章基于SpringBoot框架 – 逻辑简单实现


第一步:结构-创建文件和类

在这里插入图片描述

第二步:书写异常封装实现

公用异常接口

代码

package com.springboot.demo.common.error;


public interface CommonError {

    public int getCode();

    public String getErrMsg();

    public CommonError setErrMsg(String errMsg);
}

图示
在这里插入图片描述

实现公用异常接口

代码

package com.springboot.demo.common.error;


public enum EmBusinessError implements CommonError {

    // 全局错误码
    // 10000 开头为用户信息相关错误定义

    USER_NOT_EXIST(10001,"用户不存在"),


    //通用错误码
    PARAMATER_VALIDATION_ERROR(90001,"参数错误"),

    ;

    private int errCode;
    private String errMsg;

    private EmBusinessError(int errCode, String errMsg) {
        this.errCode=errCode;
        this.errMsg=errMsg;

    }

    @Override
    public int getCode() {
        return this.errCode;
    }

    @Override
    public String getErrMsg() {
        return this.errMsg;
    }

    @Override
    public CommonError setErrMsg(String errMsg) {
        this.errMsg = errMsg;

        return this;
    }
}

图示

在这里插入图片描述

继承 异常类构建异常自定义封装

代码

package com.springboot.demo.common.error;

/**
 * 〈一句话功能简述〉<br>
 * 〈功能详细描述〉
 *
 * @author 88450572
 * @date 2019/10/16 11:15
 * @see [相关类/方法](可选)
 * @since [产品/模块版本] (可选)
 */
public class BusinessError extends Exception implements CommonError{

    private CommonError commonError;


    //直接接收EmbusinessError的传参用于构造函数异常
    public BusinessError(CommonError commonError){
        super();
        this.commonError = commonError;


    }

 //接收自定义 errmsg的方式构造业务异常
    public BusinessError(CommonError commonError,String erMsg){
        super();
        this.commonError=commonError;
        this.commonError.setErrMsg(erMsg);
    }


    @Override
    public int getCode() {
        return this.commonError.getCode();
    }

    @Override
    public String getErrMsg() {
        return this.commonError.getErrMsg();
    }

    @Override
    public CommonError setErrMsg(String errMsg) {
         this.commonError.setErrMsg(errMsg);
         return this;
    }
}

图示

在这里插入图片描述


第三步 :定义异常处理器。拦截所有异常请求

代码

package com.springboot.demo.controller;

import com.springboot.demo.common.response.CommonReturnType;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class BaseController {
    // 定义异常类
    @ExceptionHandler(Exception.class)
    // 获取异常返回200
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody//返回json
    public Object handleException(HttpServletRequest request, Exception ex) {
        // 模块抛出异常,被注解exceptionHandle拦截到进入此类,状态设置200 返回null;
        CommonReturnType commonReturnType = new CommonReturnType();
        commonReturnType.setStatus("fail");
        commonReturnType.setData(ex);

        return commonReturnType ;

    }


}

图示
在这里插入图片描述


自定义异常校验或者debuger测试
在这里插入图片描述
在这里插入图片描述
如果拦截返回json数据

启动容器校验
在这里插入图片描述


备注:异常处理器正常运行,使用自定义异常封装类融合

第四步:测试异常

在这里插入图片描述

package com.springboot.demo.controller;

import com.springboot.demo.common.error.BusinessError;
import com.springboot.demo.common.error.EmBusinessError;
import com.springboot.demo.common.response.CommonReturnType;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;


public class BaseController {
    // 定义异常类
    @ExceptionHandler(Exception.class)
    // 获取异常返回200
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody//返回json
    public Object handleException(HttpServletRequest request, Exception ex) {
        // 模块抛出异常,被注解exceptionHandle拦截到进入此类,状态设置200 返回null;
        Map<String, Object> map = new HashMap<>();
        // 判断ex是否BusinessError异常
        if (ex instanceof BusinessError) {
            // 强转为自定义异常
            BusinessError businessError = (BusinessError) ex;

            map.put("errCode", businessError.getCode());
            map.put("errMsg", businessError.getErrMsg());

        } else {

            map.put("errCode", EmBusinessError.UNKNOWN_ERROR.getCode());
            map.put("errMsg", EmBusinessError.UNKNOWN_ERROR.getErrMsg());

        }
        return CommonReturnType.create(map, "fail");


    }


}

运行
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述若id没有找到,为空进入判断,自定义抛出异常

运行
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个开源的 Java 开发框架,而 MyBatis-Plus 是一个基于 MyBatis 的增强工具库。MyBatis-Plus 提供了很多便捷的功能,使得与数据库的交互更加简单和高效。 要集成 Spring Boot 和 MyBatis-Plus,可以按照以下步骤进行: 1. 添加依赖:在项目的 pom.xml 文件中添加 Spring Boot 和 MyBatis-Plus 的依赖。通常可以在 Maven 中央仓库找到它们的最新版本。 2. 配置数据源:在 application.properties 或 application.yml 文件中配置数据库连接信息,包括数据库 URL、用户名、密码等。 3. 创建实体类:根据需要创建与数据库表相对应的实体类。可以使用注解来标识实体类与数据表的映射关系。 4. 创建 Mapper 接口:创建与实体类对应的 Mapper 接口,用于定义数据库操作的方法。可以使用 MyBatis-Plus 提供的通用 CRUD 方法,也可以根据需求自定义方法。 5. 创建 Service 类:创建 Service 类,用于封装业务逻辑并调用 Mapper 接口中的方法。可以使用注解来标识 Service 类的角色,如 @Service。 6. 配置文件:在 Spring Boot 的配置类中配置 MyBatis-Plus 的相关配置。可以设置数据源、Mapper 扫描路径等。 7. 启动应用程序:根据需要,可以创建一个启动类并添加 @SpringBootApplication 注解。使用 Spring Boot 提供的内嵌容器启动应用程序。 通过以上步骤,就可以完成 Spring Boot 和 MyBatis-Plus 的集成。使用 MyBatis-Plus 提供的丰富功能,可以简化数据库操作,提高开发效率。这个集成方案可以在大多数使用 Spring Boot 的项目中使用,使得与数据库的交互更加方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值