【发布时间】: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