业务处理比较复杂的方法,涉及到其他的方法也很多,期间对数据都有过修改,用spring事务管理起来。
但是到快结束的时候出现了异常,系统停止运行。已经知道异常的原因和地方,现在的思路是给出现异常的地方加个异常处理,出现了异常就返回失败,修改的数据回滚,系统正常运行。
但是问题是异常如果被自己定义的try语句块捕获,spring则无法捕获到异常所以就不会回滚事务。现在我想问的是在spring织入事务的情况下能手动回滚事务么?我想在catch里面回滚了事务在返回失败!

解决方案 »

  1.   

    在catch中throw出来spring事务catch的异常不就ok了吗...
      

  2.   

    捕获spring的异常?不是很明白,详细点 程序出错的原因是因为save的时候有个列的值为空,而数据库设置为非空的所以就报出了这个异常.
      

  3.   

    你的程序肯定定义了spring对于哪些异常时回滚,在抛出异常的地方抛出你spring定义的异常就好了嘛
      

  4.   

    为何要手动回滚?交由Spring全权管理事务就可以了。
      

  5.   

    看看你的spring回滚是不是指定了Exception类型,没有的话,应该捕获到异常就会回滚的...
      

  6.   

    spring抓到异常了是会回滚 但是同时程序的这个流程也会停止啊。而不能像try一样的捕获到了还会继续运行下去 这样就能确保客户知道出错了 哪儿出错了!而不是卡死在这个流程就不动了 得看控制台输出才能知道报错了。