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;
    }
发布了159 篇原创文章 · 获赞 350 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/wenniuwuren/article/details/88887813