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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容