2019-09-04 17:45

Db.tx()调用的是DbPro.tx(Config config, int transactionLevel, IAtom atom)方法,里面是这样子写的:
boolean result = atom.run();
​ if (result)
​ return true;
​ throw new NestedTransactionHelpException("Notice the outer transaction that the nested transaction return false"); // important:can not return false

而NestedTransactionHelpException是一个RuntimeException,所以可以不用在tx方法用throws声明。这也是你后面的代码没有执行的原因。

处理方案:直接当成一般的编译异常处理,套一个try catch。

try{

​ DB.tx()

} catch(NestedTransactionHelpException e){

​ //这里写你的回滚事务的操作

}

希望能帮到楼主。