You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jdbi3是否会对所有类型的异常保证事务回滚?

问题解答

你给出的代码场景下,抛出CustomException时可以100%确定Jdbi会自动回滚事务,不需要异常是SQLException或者Jdbi内置异常类型。

核心逻辑说明

  • Jdbi的inTransaction方法默认设计约定:只要传入的lambda回调块抛出任何类型的异常(包括checked异常、unchecked异常、JDBC底层异常、Jdbi内置异常、业务自定义异常),都会自动执行事务回滚操作;只有lambda正常执行完成没有抛出任何异常时,才会自动提交事务。
  • 该行为不需要额外配置,除非你在lambda内部主动调用handle.commit()/handle.rollback()手动修改事务状态,否则只要异常向上抛出到inTransaction的捕获逻辑,就会触发回滚。

特殊场景说明

如果业务需要某类异常不触发回滚,只需要在lambda内部捕获对应异常,不向外抛出即可,其余场景均遵循默认回滚规则。

内容的提问来源于stack exchange,提问作者res1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:54:08