gpt4 book ai didi

spring - 如何从 REST spring 应用程序的 SqlExceptionHelper 获取有关错误的信息

转载 作者:行者123 更新时间:2023-12-05 02:08:29 26 4
gpt4 key购买 nike

我的数据库中有一些表,我想获取有关对数据库的错误请求的信息。如果我试图用错误的外键保存实体,我想获取有关这些键的详细信息。

例如:

2020-03-25 18:37:37.595 ERROR 9788 --- [nio-8090-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: insert or update on table "student" violates foreign key constraint "student_fkey_to_specialty"
Detail: Key (specialtykey)=(2) is not present in table "specialty".

我试图用这段代码解决问题,但我得到了其他信息。

could not execute statement; SQL [n/a]; constraint [student_fkey_to_specialty]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement

我的代码:

@PostMapping
public void saveStudent(@RequestBody StudentDTO studentDTO) {
if(studentDTO!=null){
try {
studentService.save(studentDTO);

}catch (Exception|Error e){
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.getLocalizedMessage(),e );
}
}
}

最佳答案

使用循环迭代到原来的异常,这是一个执行此操作的示例函数:

private String getCauseMessage(Throwable t)

Throwable cause = t;
while (t.getCause() != null) {
cause = t.getCause();
}

return t.getLocalizedMessage();
}

因为您永远不知道有多少异常可能被链接在一起,所以使用循环是最安全的方法。如果您只是直接使用它,您可能会遇到 NullPointerException 或没有收到原始异常的消息。

关于spring - 如何从 REST spring 应用程序的 SqlExceptionHelper 获取有关错误的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60851366/

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