zoukankan      html  css  js  c++  java
  • Spring事务只对运行时异常回滚

    我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚,岂不知Spring的事务默认只有在发生运行时异常即:RunTimeException时才会发生事务,如果一个方法抛出Exception或者Checked异常Spring的事务并不会回滚。
    下面我们来看看异常的分类,异常一般分为Checked异常和RunTime异常。
    CheckedException:
    Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式的处理Checked异常,如果程序没有处理checked异常,程序在编译时候将发生错误。
    我们比较熟悉的Checked异常有
    Java.lang.ClassNotFoundException
    Java.lang.NoSuchMetodException
    java.io.IOException
    RunTimeException:
    Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
    我们比较熟悉的RumtimeException类的子类有
    Java.lang.ArithmeticException
    Java.lang.ArrayStoreExcetpion
    Java.lang.ClassCastException
    Java.lang.IndexOutOfBoundsException
    Java.lang.NullPointerException
    我们可以通过以下方式改变事务的默认处理方式:
    在@Transaction注解中定义noRollbackFor和RollbackFor指定某种异常是否回滚。
    @Transaction(noRollbackFor=RuntimeException.class)
    @Transaction(RollbackFor=Exception.class)
    这就要求我们在自定义异常的时候,让自定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理。
    ---------------------
    作者:孙_悟_空
    来源:CSDN
    原文:https://blog.csdn.net/fuyuwei2015/article/details/47812759
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    获取全部校园新闻
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础
    数据库随笔
    2017.2.10总结
    书籍相关
    全排列和全组合
    面试积累1
    分布式框架学习目标
    mac上设置sudo不要密码
  • 原文地址:https://www.cnblogs.com/libin6505/p/9811323.html
Copyright © 2011-2022 走看看