0
我要處理這個異常:如何用Spring/JPA處理異常?
try {
save = usersRepository.save(user);
}
catch (Exception gottaCatchEmAll){
System.out.println("got it");
}
在日誌中我看到:
不能添加或更新子行,外鍵約束失敗
我怎麼能趕上它?
我要處理這個異常:如何用Spring/JPA處理異常?
try {
save = usersRepository.save(user);
}
catch (Exception gottaCatchEmAll){
System.out.println("got it");
}
在日誌中我看到:
不能添加或更新子行,外鍵約束失敗
我怎麼能趕上它?
我會建議編寫建議處理程序類來處理任何異常。例如,我假設你的例外類型是DataIntegrityViolationException
。這將被包裹在某種DTO中,可以返回到前端或做你喜歡的東西。
@ControllerAdvice
public class ExceptionHandler {
@ExceptionHandler(DataIntegrityViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorDto processConstraintError(DataIntegrityViolationException ex) {
return new ErrorDto(ex.getMessage());
}
}
不需要嘗試從JPA中捕捉任何東西。
我把這個添加到我的項目中沒有任何事情發生,如何激活它爲特定的控制器? – user3871754
除非您在建議註釋中指定'basePackages',否則它不綁定到特定的控制器。你需要顯示你的Spring配置在哪裏掃描這個包。 – Vaelyr
在啓動時我在日誌中看到:尋找ControllerAdvice :: ExceptionHandler中檢測到ExceptionHandler方法,我使用spring引導+ spring安全性,我沒有任何額外的配置spring.jpa.show-sql = true – user3871754