/**
* 如果在调用b.doSomeThing(i);的时候抛出了异常,由于
* 这里嵌套事务,就会把事务设置为rollback-only状态,
* 又因为在循环中对异常已经进行了捕获,所以并不会影响之后的
* 循环操作,当循环执行完出来,提交外部事务的时候,会发现事务已经
* 被设置为了rollback-only状态,于是就只能就行事务回滚了.
* @author Administrator
*
*/
public class Test1 {
public static void main(String[] args) {
Test1 test1 = new Test1();
B b = new B();
System.out.println("外部事务开始啦......");
for(int i = 0; i < 10; i++){
try {
b.doSomeThing(i);
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("外部事务结束啦......");
}
}
class B{
public void doSomeThing(int i) throws Exception{
System.out.println("内部事务开始啦~~~~~" + i);
if(i == 3){
throw new Exception("我是一个沉着、淡定、寂寞、孤独的异常");
}else{
System.out.println("我是不出异常的时候.....");
}
System.out.println("内部事务结束啦~~~~~" + i);
}
}