我使用spring-data-jpa来读/写我的数据库。我已经阅读了spring-data的文档,而我似乎找不到的一件事就是如何处理异常。
我希望捕获由repo操作引发的任何类型的异常。有没有办法在try / catch中包装单个repo操作并捕获任何RuntimeException?我宁愿避免这样做,因为那是一个比我更喜欢的东西。
spring-data是否将所有异常包装在自己的SpringDataException()或类似内容中?我查看了spring-data-commons jar以及spring-data-jpa jar并没有找到适用的东西。
答案 0 :(得分:4)
spring-data是否将所有异常包装在自己的SpringDataException()或类似的
中
是的,有点儿。 spring-data(-jpa)启用从JPA异常到Spring的DataAccessException层次结构的异常转换:
来自spring-data-jpa参考实现:
...除此之外,它还激活了使用@Repository注释的所有bean的持久性异常转换,以便将JPA持久性提供程序抛出的异常转换为Spring的DataAccessException层次结构。
来自Spring参考实现:
Spring提供了从特定于技术的异常(如SQLException)到其自己的异常类层次结构的便捷转换,并将DataAccessException作为根异常。这些异常包装了原始异常,因此从来没有任何人可能会丢失任何可能出错的信息......