Spring框架把SQLIntegrityConstraintViolationException异常包装成了DataIntegrityViolationException导致没办法捕获到SQLIntegrityConstraintViolationException异常
代码只能写为
/**
* 外键约束异常
*/
@ExceptionHandler(DataIntegrityViolationException.class)
public AjaxResult handleSQLIntegrityConstraintViolationException(DataIntegrityViolationException e, HttpServletRequest request) {
String requestURI = request.getRequestURI();
if (e.getMessage().contains("Cannot delete or update a parent row: a foreign key constraint fails")) {
log.error("请求地址'{}',发生外键约束异常.", requestURI, e);
return AjaxResult.error("操作失败:存在外键约束,无法删除或更新相关数据。");
}
//返回数据完整性约束违反
log.error("请求地址'{}',发生数据完整性约束异常.", requestURI, e);
return AjaxResult.error("操作失败:数据完整性约束违反。");
}