MySQL 主键冲突异常如何全部捕获?

Posted wenniuwuren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 主键冲突异常如何全部捕获?相关的知识,希望对你有一定的参考价值。

很多时候只要觉得捕获  DuplicateKeyException 就行,其实这样还不够,底层还会抛出其他异常类型,完整的捕获如下:

public void method() 
try 
            
            result = dao.insert(shopkeeperIndexDO);
        
        catch (DuplicateKeyException e) 
            
            // do something

        
        catch (Exception e) 
            String errorCode = getErrorCode(e);

            // 这也是主键冲突异常
            if (errorCode.indexOf("Duplicate entry") >= 0) 

                // do something

            
            
            // do something
        


        private 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;
    

 

以上是关于MySQL 主键冲突异常如何全部捕获?的主要内容,如果未能解决你的问题,请参考以下文章

jdbc往mysql插入数据,主键重复抛啥异常

立即执行...捕获记录特定异常

sqoop从hive导入数据到mysql时出现主键冲突

java 主键异常怎么捕获

mysql 存储过程 若主键冲突则更新,不冲突则插入数据

捕获访问冲突异常?