如何区分数据库连接失败错误与Spring Data Jpa中DataAccessException中的其他异常

问题描述 投票:1回答:1

我需要识别数据库连接失败异常与其他异常,并在我的kafka监听器错误处理程序中进行相应处理。由于在Spring Data JPA中将所有内容转换为DataAcccessException,我只是想知道在app运行时发生连接失败时会抛出哪些异常。工作环境:Spring boot 2.x,Spring数据jpa,spring-kafka,Java 8

java exception-handling spring-data-jpa spring-kafka
1个回答
2
投票

DataAccessException只是层次结构的根,检查子类,Spring已经为您分类了异常类型。

听起来你对TransientDataAccessException的实例很感兴趣,它涵盖了连接和锁定问题,它的description是:

被视为瞬态的数据访问异常层次结构的根 - 当先前失败的操作可能在重试操作时成功而没有应用程序级功能的任何干预。

存在NonTransientDataAccessException,这类似于数据完整性错误(RI检查和约束失败):

被视为非瞬态的数据访问异常层次结构的根 - 除非纠正异常的原因,否则相同操作的重试将失败。

和RecoverableDataAccessException(事务问题):

如果应用程序执行某些恢复步骤并重试整个事务,或者在分布式事务(事务分支)的情况下,先前失败的操作可能成功,则抛出数据访问异常。恢复操作至少必须包括关闭当前连接并获取新连接。

apidoc显示了每个子类的子类,因此您可以了解正在描述的错误类型。

© www.soinside.com 2019 - 2024. All rights reserved.