【问题标题】:JPA Exception SpecJPA 异常规范
【发布时间】:2014-06-02 12:25:09
【问题描述】:

我正在开发一个项目,该项目使用 JPA 上的 spring-data 作为数据库层。 使用的版本:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.4.3.RELEASE</version>
    </dependency>

我的目标是在执行以下类型的代码时处理特定的异常(不仅仅是下面的异常):

        try
        {
            jpaRepository.save(target);
        } catch (Exception e1)
        {
            ....
        }

我找不到此代码可能引发的异常。 我查看了以下链接,但找不到有关抛出异常的提示。

http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/api/org/springframework/data/jpa/repository/support/SimpleJpaRepository.html#save(S)

提前谢谢

【问题讨论】:

    标签: java spring hibernate jpa


    【解决方案1】:

    该 API 不会引发任何异常。如果您愿意,您可以捕获运行时异常。

    【讨论】:

    • 谢谢。我不想捕获所有异常,因为我想要一个特定的处理。我需要在处理程序未捕获的其他调用流上抛出任何非数据异常
    【解决方案2】:
    org.springframework.dao.DataIntegrityViolationException 
    

    是你提到的代码可以抛出的异常。

    【讨论】:

    • 谢谢。你知道这是否是唯一的吗?另外你在哪里看到这个被扔了。提前谢谢。
    • 我认为这是您需要捕获的唯一异常,因为它处理较低级别的持久性异常,请查看这篇文章:baeldung.com/spring-dataIntegrityviolationexception
    【解决方案3】:

    100% 不同意捕获运行时异常。您永远不想做的事情,因为这很可能是数据完整性问题,可以通过防御性编码来保护。

    您可以防御代码来完全避免异常(据我了解,这是一个 SQLException)。实际上,您应该始终防御代码。

    但是,如果问题是无法像听起来那样将数据提交到数据库,那么您可以在 SQL 中捕获异常。

    另外,如果您在谈论访问数据库的异常,这听起来像是一个 SQLException。

    【讨论】:

      猜你喜欢
      • 2013-09-15
      • 1970-01-01
      • 2013-01-14
      • 2018-10-30
      • 1970-01-01
      • 2018-07-16
      • 2021-06-08
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多