背景
迁移到达梦数据库后,发现我们的全局异常拦截中的唯一索引异常 DuplicateKeyException
无法被正常拦截,给前端直接抛出了数据库原始的错误信息,对用户极其不友好。
异常信息
如果不对唯一索引异常拦截,则默认 MySQL
与 达梦数据库
的异常信息如下:
MySQL异常:Error updating database. Cause: java.sql. SQLIntegrityConstraintViolationException: Duplicate entry ‘111’ for key ‘XXX’
达梦8异常:Error updating database. Cause: dm.jdbc.driver. DMException: 违反表[YYY]唯一性约束
全局异常拦截
在 SpringBoot
中通过 RestControllerAdvice
注解,实现对异常响应的统一封装。可参考:全栈开发之后端