在发生异常之前是否完成了异常处理回滚操作?

int*_*tar 6 java exception-handling exception

想象一下,我有这样的方法

void myMethod(MyThing t) throws MyException {
   t.foo = "bar";
   if (t.condition()) { 
      throw new MyException();
   }
}
Run Code Online (Sandbox Code Playgroud)

如果触发了异常,t.foo的值是否会恢复为之前的值?还是保持"酒吧"价值?

nic*_*ild 9

MyThing对象上的foo属性的值不会还原任何异常.

在您的示例中,没有try块,但如果有块,您可以在相应的catch块中执行自己的值回滚类型.

try {
    t.foo = "bar";
    doSomethingRiskyWhichMightThrowMyException();
} catch(MyException e) {
    t.foo = "rolledbackvalue";
}
Run Code Online (Sandbox Code Playgroud)