2020-11-13 try catch 后事务处理

一 自动回滚

1,方法上加@Transactional 注解即可,但是这种只能检测运行时异常,非运行时异常那个需要在@Transactional注解里

2,加上rollback = Exception.class 

                示例:@Transactional(rollbackFor =Exception.class)

这种可应付大多情况。

3,在实际应用中,很多时候需要try catch 这种异常是自己处理了,方法检测不到。事务就不会回滚。应用示例:

    需要把数据放入文件中,用了事务,但是IO留基本都会try catch 异常。

处理方法: 在 catch 里加上 throw e 或者throw RunTimeException;

示例:    try {

                    tempFile.createNewFile();

            }catch (IOException e) {

                e.printStackTrace();

                throw e;

        }


这样方法里就能检测到异常并捕捉后事务回滚


二 手动回滚

上面两个在catch{...}中抛出异常的方法都有个不足之处,就是不能在catch{...}中存在return子句,所以设置手动回滚,当捕获到异常时,手动回滚,同时返回前台提示信息。

在return前加上下面的话

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

载自https://www.cnblogs.com/zjfjava/p/9963958.html

载自 https://www.cnblogs.com/zjfjava/p/9963958.html

你可能感兴趣的:(2020-11-13 try catch 后事务处理)