在这种情况下,“myMethod()”会在“doSomething()”之前或之后执行吗?
public class Foo {
public void fooMethod() {
Bar bar = new Bar();
bar.barMethod().myMethod();
}
}
public class Bar {
public SomeClass barMethod() {
try {
return new SomeClass();
} finally {
doSomething();
}
}
}
答案 0 :(得分:6)
myMethod()
在 doSomething
之后执行,因为{/ 1}}在 doSomething
返回其值给调用者之前执行。
计算并准备返回值,然后barMethod
块完整执行,然后调用者继续执行;这是在调用finally
时。
答案 1 :(得分:0)
doSomething()
public class Test {
public static void main(String[] a){
new Foo().fooMethod();
}
public static class Foo {
public void fooMethod(){
Bar bar = new Bar();
bar.barMethod().parseInt("sc");
}
}
public static class Bar {
public Integer barMethod(){
try {
return new Integer(100);
} finally {
doSomething();
}
}
private void doSomething(){
System.out.println("doSomething");
}
}
}
显示“doSomething”后崩溃了