关于工作中遇到的异常处理

来源:1-1 为什么做这门课

笑看从前小菜哥

2021-11-04

首先按照惯例说一句老勤牛逼,接下来提问:
老勤,我在最近项目中发现我们的代码只要出现任意的不满足条件均抛出自定义的异常,包括参数校验、业务操作判断不符合条件都抛出了自定义异常,哪怕之前进行了表数据的修改操作,我记得之前我问过你,代码中抛出了异常,统一异常处理那里如果处理后,就相当于手动catch住了异常,这部分代码造成的数据修改是无法回滚的,但是我们的数据确实回滚了事物,请问下这种情况下是不是有其他的处理方式回滚事物。
还有一种情况,我们这边有多张表操作,但是只允许部分事物回滚,比如我们进行一个操作,然后这个操作抛出了异常,但是我们有需要记录失败的次数,哪个操作中涉及到了多张表操作,我们需要回滚表操作的数据,但是失败次数这个记录的数据不需要回滚,这个场景应该如何设计呢?

写回答

1回答

张勤一

2021-11-05

同学你好:

    1. 统一异常处理只是在返回的时候把异常包装返回了,不影响你的业务本身,所以,service 出现了异常,加上了事务注解,当然是可以回滚的,这并没有什么问题

    2. 多张表操作,允许部分事务回滚,这除了业务逻辑层面控制之外,我想不出更好的办法了,记录下来然后简单的处理吧。

2
1
笑看从前小菜哥
感谢老勤的回答,关于第二个问题,我想到了一个思路,根据事物的传播行为,一个方法中,使用两种传播行为,产生两个事物来控制
2021-11-09
共1条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程