gpt4 book ai didi

java - 从 DataIntegrityViolationException 获取 SQL 异常消息

转载 作者:行者123 更新时间:2023-11-30 02:10:46 26 4
gpt4 key购买 nike

正在处理一个 api 调用,该调用会更改数据库中的一些数据。我正在尝试从 api 提供有意义的消息,以防 JPA 层出现异常。在任何 sql 查询运行失败时,我都会从 JPA 收到 DataIntegrityViolationException,其中不包含失败的确切原因。因此,我从中提取 SQLException,然后用错误消息进行响应。

private String getSQLExceptionMessage(DataIntegrityViolationException e) {
Throwable nextException = e.getCause();
while (!nextException.getClass().equals(SQLException.class) && nextException.getCause() != null
&& !nextException.getClass().equals(nextException.getCause().getClass())) {
nextException = nextException.getCause();
}
return nextException.getMessage();
}

有没有更好的方法来做到这一点?

最佳答案

Spring 中有一个实用程序类 NestedExceptionUtils,您可以使用它的 getMostSpecificCause 方法来获取任何异常的“根本”原因。

关于错误处理 - 您可以实现 custom exception handler对于DataIntegrityViolationException,从根本原因中提取约束名称,对其进行分析并为用户创建相应的消息。

一些错误处理示例:1 , 2 .

关于java - 从 DataIntegrityViolationException 获取 SQL 异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com