带有异常捕获的春季交易

警察

最近,我一直在使用Spring Boot + Spring Data JPA + Hibernate。我在春季交易中遇到了一个问题。这是我的服务班级和两个问题:

@Transactional
@Service
class MyService {

    @Autowired
    private MyRepository myRep;

    public void method_A() {
       try {
          method_C();

          .....

          method_B();
       } catch(Exception e) {}
    }

    public void method_B() {
       Entity e = new Entity();
       e.set(...);

       myRep.save(e);
    }

    public void method_C() throws Exception {
       ....
    }
}

1.如果方法method_C()抛出异常,并且我想捕获它并记录下来,则该事务不会在方法中回滚method_B(),因为该异常未到达Spring框架。因此,我应该怎么做才能从中捕获异常,method_C()同时又不丢失方法的method_B()回滚能力

2.考虑新方法method_A()

public void method_A() {
   for(...) {
      ...
      ...
      method_B();
   }
}

我想method_B()循环调用如果在method_B()我希望method_B()回滚的事务中发生异常,method_A()不应退出,则循环应继续执行。我该如何实现?

警察

我通过以下方式解决了我的2个问题:创建了另一个@Service类并移入该类method_B()我已将此课程注释为@Transactional现在该方法method_A()如下所示:

public void method_A() {
   for(...) {
      ...
      try {
         anotherService.method_B();
      } catch (Exception e) {
         logger.error(...);
      }
   }
}

如果RuntimeException在该method_B()方法中发生,则将适当地记录异常,method_B()将回滚的事务,并且循环将连续进行。感谢大家的回应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala:静默捕获所有异常

来自分类Dev

Java线程捕获所有异常?

来自分类Dev

在 Unity 中捕获所有异常

来自分类Dev

捕获类中的所有异常

来自分类Dev

QTimer单发,在捕获中传递带有异常的lambda

来自分类Dev

发送带有异常密钥的JSON

来自分类Dev

为什么catch语句不能捕获所有异常?

来自分类Dev

如何捕获Web API 2中的所有异常?

来自分类Dev

mongodb崩溃节点,尝试捕获内有异常

来自分类Dev

如何捕获PL / SQL脚本中的所有异常?

来自分类Dev

捕获除AsyncException之外的所有异常

来自分类Dev

如何尝试/捕获所有异常

来自分类Dev

捕获Javascript类方法中的所有异常

来自分类Dev

如何使用CherryPy捕获所有异常?

来自分类Dev

捕获网络问题中的所有异常

来自分类Dev

从 Android 中的线程捕获所有异常

来自分类Dev

等待带有异常处理的所有任务的完成

来自分类Dev

Java覆盖带有异常处理的compareTo

来自分类Dev

带有异常处理的generator.close()的说明

来自分类Dev

URI上的htaccess重写器,带有异常

来自分类Dev

MessageExtensionMethods.ToHttpRequestMessage失败,并带有异常

来自分类Dev

在Java中进行错误处理时,应该捕获异常以捕获所有异常还是单独捕获异常?

来自分类Dev

春季交易:从带有require的方法中调用带有require_new的方法

来自分类Dev

Xcode在iOS 8的Main()中引发带有“所有异常”断点的异常

来自分类Dev

有异常的覆盖方法

来自分类Dev

捕获所有异常以进行详细日志记录-优点和缺点

来自分类Dev

捕获所有异常并在Jersey中返回自定义错误

来自分类Dev

捕获服务结构ReceiveReminderAsync中未处理的所有异常的正确方法是什么

来自分类Dev

拦截C#中的所有异常,即使它们已经被捕获

Related 相关文章

  1. 1

    Scala:静默捕获所有异常

  2. 2

    Java线程捕获所有异常?

  3. 3

    在 Unity 中捕获所有异常

  4. 4

    捕获类中的所有异常

  5. 5

    QTimer单发,在捕获中传递带有异常的lambda

  6. 6

    发送带有异常密钥的JSON

  7. 7

    为什么catch语句不能捕获所有异常?

  8. 8

    如何捕获Web API 2中的所有异常?

  9. 9

    mongodb崩溃节点,尝试捕获内有异常

  10. 10

    如何捕获PL / SQL脚本中的所有异常?

  11. 11

    捕获除AsyncException之外的所有异常

  12. 12

    如何尝试/捕获所有异常

  13. 13

    捕获Javascript类方法中的所有异常

  14. 14

    如何使用CherryPy捕获所有异常?

  15. 15

    捕获网络问题中的所有异常

  16. 16

    从 Android 中的线程捕获所有异常

  17. 17

    等待带有异常处理的所有任务的完成

  18. 18

    Java覆盖带有异常处理的compareTo

  19. 19

    带有异常处理的generator.close()的说明

  20. 20

    URI上的htaccess重写器,带有异常

  21. 21

    MessageExtensionMethods.ToHttpRequestMessage失败,并带有异常

  22. 22

    在Java中进行错误处理时,应该捕获异常以捕获所有异常还是单独捕获异常?

  23. 23

    春季交易:从带有require的方法中调用带有require_new的方法

  24. 24

    Xcode在iOS 8的Main()中引发带有“所有异常”断点的异常

  25. 25

    有异常的覆盖方法

  26. 26

    捕获所有异常以进行详细日志记录-优点和缺点

  27. 27

    捕获所有异常并在Jersey中返回自定义错误

  28. 28

    捕获服务结构ReceiveReminderAsync中未处理的所有异常的正确方法是什么

  29. 29

    拦截C#中的所有异常,即使它们已经被捕获

热门标签

归档