美文网首页
mybatis (5)—唯一索引冲突后抛出个性化异常

mybatis (5)—唯一索引冲突后抛出个性化异常

作者: 小胖学编程 | 来源:发表于2020-06-18 12:38 被阅读0次

场景:保存记录时,若记录存在,那么抛出异常。

一般在插入之前会查询记录是否存在,但是有概率该线程在保存记录时,该记录已经被其他线程保存。所以一般可以在某些字段上建立“唯一索引”。

建立唯一索引后,直接去保存数据,若抛出异常,那么获取到异常信息,判断是否是主键(唯一键)冲突的异常。

数据库唯一索引(主键)出现冲突时,便会抛出:

主键冲突异常.png

代码实现

异常工具类:

/**
 * 异常工具类
 */
public abstract class ExceptionUtil {

    //主键/唯一键冲突的异常信息
    public static final String UNIQUE_ERROR = "Duplicate entry";

    /**
     * 获取到错误描述
     */
    public static String getErrorCode(Exception e) {
        String errorCode = "";
        if (e.getCause() != null && e.getCause().getMessage() != null) {
            errorCode = e.getCause().getMessage();
        }
        if (Strings.isNullOrEmpty(errorCode) && e.getMessage() != null) {
            errorCode = e.getMessage();
        }
        return errorCode;
    }
}
    @Override
    public void save(PrizePo prizePo) {
        try {
            prizeDao.save(prizePo);
        } catch (Exception e) {
            String errorCode = ExceptionUtil.getErrorCode(e);
            if (errorCode.contains(ExceptionUtil.UNIQUE_ERROR)) {
                throw new HomeworkException("奖品名称已存在,请调整奖品名称");
            }
            //否则的话,继续向外部抛出异常!
            throw e;
        }
    }

捕获到特定的异常后,转换为个性化异常。否则继续对外抛出异常。

相关文章

  • mybatis (5)—唯一索引冲突后抛出个性化异常

    场景:保存记录时,若记录存在,那么抛出异常。 一般在插入之前会查询记录是否存在,但是有概率该线程在保存记录时,该记...

  • NoSuchMethodException: org.apach

    (1)问题描述 自定义了一个 MyBatis 拦截器,用于拦截查询语句。拦截器的签名为: 执行后抛出异常,完整异常...

  • mybatis 备忘录

    问题一、执行mybatis某个查询的时候,抛出如下异常是怎么回事? 原因:mybatis 不识别大写的OR AND...

  • 学习笔记8-异常处理

    异常处理 使用try和catch处理异常 抛出异常 通过throw关键字来抛出异常,执行到throw语句后,函数会...

  • 【Solidity学习笔记】异常

    3.7 异常 在某一些情况下,异常会被自动抛出,如除数为0也可以通过throw关键词,手动抛出异常抛出异常后,会中...

  • Swift笔记(二十四)方法抛出异常及异常处理方式

    怎么让一个方法抛出异常 定义一个函数会抛出异常(后加throws) 在函数里抛出具体异常(具体异常值必须遵循Err...

  • 异常

    BatchUpdateException批量更新时抛出。该异常保存了异常发生前每条更新命令的返回值。抛出该异常后,...

  • php 异常处理

    从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出...

  • wueasy基础平台2.2.0版本发布 - 支持多语言

    2.2.0版本发布 mybatis升级至2.1.0 DataMap优化,类型转换失败,抛出异常 附件上传新增aws...

  • mysql实用语法技巧

    主键冲突方法 on duplicate key update-- 也可用于解决update时造成的唯一索引冲突, ...

网友评论

      本文标题:mybatis (5)—唯一索引冲突后抛出个性化异常

      本文链接:https://www.haomeiwen.com/subject/xfbyxktx.html