feat(exception): 添加数据权限异常及通用数据库执行异常处理

This commit is contained in:
Ray.Hao
2026-05-23 10:30:44 +08:00
parent 65333b9e8e
commit eebb287095
3 changed files with 32 additions and 5 deletions

View File

@@ -0,0 +1,28 @@
package com.youlai.boot.common.exception;
import lombok.Getter;
/**
* 数据权限异常
* <p>
* 当数据权限拦截器拼接SQL条件失败时抛出属于系统级异常非业务异常。
*
* @author zc
* @since 2.0.0
*/
@Getter
public class DataPermissionException extends RuntimeException {
private final String mappedStatementId;
public DataPermissionException(String mappedStatementId, String message) {
super(message);
this.mappedStatementId = mappedStatementId;
}
public DataPermissionException(String mappedStatementId, String message, Throwable cause) {
super(message, cause);
this.mappedStatementId = mappedStatementId;
}
}

View File

@@ -111,6 +111,7 @@ public enum ResultCode implements IResultCode, Serializable {
/** 二级宏观错误码:第三方服务具体错误(按号段细分,便于定位是接口不存在/数据库异常等) */
INTERFACE_NOT_EXIST("C0113", "接口不存在"),
DATABASE_SERVICE_ERROR("C0300", "数据库服务出错"),
DATABASE_EXECUTION_ERROR("C0310", "数据库执行异常"),
DATABASE_EXECUTION_SYNTAX_ERROR("C0313", "数据库执行语法错误"),
INTEGRITY_CONSTRAINT_VIOLATION("C0342", "违反了完整性约束"),
DATABASE_ACCESS_DENIED("C0351", "演示环境已禁用数据库写入功能请本地部署修改数据库链接或开启Mock模式进行体验");

View File

@@ -190,13 +190,11 @@ public class GlobalExceptionHandler {
@ExceptionHandler(BadSqlGrammarException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public <T> Result<T> handleBadSqlGrammarException(BadSqlGrammarException e) {
log.error(e.getMessage(), e);
String errorMsg = e.getMessage();
if (StrUtil.isNotBlank(errorMsg) && errorMsg.contains("denied to user")) {
log.error("SQL执行异常, message={}", e.getMessage(), e);
if (StrUtil.isNotBlank(e.getMessage()) && e.getMessage().contains("denied to user")) {
return Result.failed(ResultCode.DATABASE_ACCESS_DENIED);
} else {
return Result.failed(e.getMessage());
}
return Result.failed(ResultCode.DATABASE_EXECUTION_ERROR);
}
/**