org.shoulder.web.advice.RestControllerDataExceptionAdvice Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of shoulder-web Show documentation
Show all versions of shoulder-web Show documentation
shoulder WEB 模块,基于Spring Boot Web提供了 Controller AOP 日志、AOP异常处理,统一返回值,健康检查,租户、用户解析,Web
安全防护,通用CrudController,动态字典,标签管理,HTTP client AOP日志、AOP异常处理等能力,助力Web飞速开发。
The newest version!
package org.shoulder.web.advice;
import org.shoulder.core.dto.response.BaseResult;
import org.shoulder.core.exception.BaseRuntimeException;
import org.shoulder.core.exception.CommonErrorCodeEnum;
import org.shoulder.core.log.Logger;
import org.shoulder.core.log.ShoulderLoggers;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* Spring Data Exception,spring data 中不会抛出 SQLException、HibernateException,而是自己完全定义了一套
*
* @author lym
*/
@Order(Ordered.LOWEST_PRECEDENCE - 1)
@RestControllerAdvice
public class RestControllerDataExceptionAdvice {
private final Logger log = ShoulderLoggers.SHOULDER_WEB_ERROR;
/**
* 数据重复
*/
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler({DuplicateKeyException.class})
public BaseResult paramsMissingHandler(DuplicateKeyException e) {
BaseRuntimeException stdEx = new BaseRuntimeException(CommonErrorCodeEnum.DATA_STORAGE_FAIL, e, e.getMessage());
log.error(stdEx);
return stdEx.toResponse();
}
/**
* 数据库 / SQL 问题
*/
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler({DataAccessException.class})
public BaseResult paramsMissingHandler(DataAccessException e) {
BaseRuntimeException stdEx = new BaseRuntimeException(CommonErrorCodeEnum.DATA_ACCESS_FAIL, e, e.getMessage());
log.error(stdEx);
return stdEx.toResponse();
}
/*
DataIntegrityViolationException Insert或Update数据时违反了完整性,例如违反了惟一性限制,比如 name最大16,却传来了200
PersistenceException 数据类型不正确,比如数据库int,来了string(abc)
BadSqlGrammarException sql 写错了->代码写错了->对外未知错误
TransientDataAccessResourceException 查的时候,赋值错了,比如缺少字段 / 格式不正确;如时间格式Zero date value prohibited-通过jdbc连接时候,zeroDateTimeBehavior=CONVERT_TO_NULL
CleanupFailureDataAccessException 一项操作成功地执行,但在释放数据库资源时发生异常(例如,关闭一个Connection)
DataAccessResourceFailureException 数据访问资源彻底失败,例如不能连接数据库
DataRetrievalFailureException 某些数据不能被检测到,例如不能通过关键字找到一条记录
DeadlockLoserDataAccessException 当前的操作因为死锁而失败
IncorrectUpdateSemanticsDataAccessException Update时发生某些没有预料到的情况,例如更改超过预期的记录数。当这个异常被抛出时,执行着的事务不会被回滚
InvalidDataAccessApiusageException 一个数据访问的JAVA API没有正确使用,例如必须在执行前编译好的查询编译失败了
invalidDataAccessResourceUsageException 错误使用数据访问资源,例如用错误的SQL语法访问关系型数据库
OptimisticLockingFailureException 乐观锁的失败。这将由ORM工具或用户的DAO实现抛出
TypemismatchDataAccessException Java类型和数据类型不匹配,例如试图把String类型插入到数据库的数值型字段中
UncategorizedDataAccessException 有错误发生,但无法归类到某一更为具体的异常中*/
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy