有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中返回before finally

在这种情况下,“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();
        }
    }
}

共 (2) 个答案

  1. # 1 楼答案

    myMethod()doSomething之后执行,因为doSomethingbarMethod之前执行,将其值返回给调用者

    计算并准备返回该值,然后finally块整体执行,然后调用方才能继续;这是调用myMethod的时候

  2. # 2 楼答案

    myMethod()之前的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”后崩溃