今天敲代码我发现了个问题,我的数据库唯一索引会报错,我想把报错信息中的一部分信息打印下来,但是我创建了全局异常处理以及兜底的exception后,我发现我的数据库报错一直走的是exception的报错。后来上网查了才发现,在spring中会把报错信息SQLIntegrityConstraintViolationException.class转换成DuplicateKeyException.class而不是SQLIntegrityConstraintViolationException。所以我需要捕获的应该是Du
@ExceptionHandler(DuplicateKeyException.class) public Result error(DuplicateKeyException e) { String msg = e.getMessage(); // 安全提取被单引号包围的第一个值 String value = "该数据"; int start = msg.indexOf("'"); int end = msg.indexOf("'", start + 1); if (start != -1 && end != -1) { value = msg.substring(start + 1, end); } return Result.error("\"" + value + "\" 已存在,请使用其他名称"); }