【问题标题】:Getting stacktrace for exceptions in Spring @Transactional method在 Spring @Transactional 方法中获取异常的堆栈跟踪
【发布时间】:2019-06-30 09:57:40
【问题描述】:

最近有一个案例,@Transactional 方法完成但没有报告任何问题但没有数据写入数据库,所以在某个时候发生了回滚。我花了很多时间找到抛出 NullPointerException 的行。因为没有堆栈跟踪或错误日志来指示问题,所以它只是默默地完成了。

那么有没有办法在事务中发生异常后获得完整的跟踪?

尝试为org.springframework.transaction.interceptor = trace 设置日志级别,但我得到的唯一结果是Applying rules to determine whether transaction should rollback on java.lang.NullPointerException 行,尽管报告了问题所在并没有显示它到底发生在哪里。

【问题讨论】:

  • 那NPE在哪里?在 Spring 或您的业务逻辑中?恕我直言,您有时会吞下异常。
  • 同意 Antoniosss 关于吞下异常...你能发布方法的代码吗?
  • NPE 在业务逻辑中在从@Transactional 方法调用的方法中,但是代码很多。我没有吞下它,因为如果用try{} catch(Exception e) {} 将所有东西都包裹在@Transactional 方法中,它就会被抓住。

标签: java spring spring-data-jpa spring-transactions


【解决方案1】:

如果您希望事务在出现异常时回滚。请通过 Exception 类的一些子异常。请按如下方式更新您的注释。 @Transactional(rollbackFor = Exception.class)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2019-08-07
  • 2011-01-05
  • 1970-01-01
  • 2016-09-03
相关资源
最近更新 更多