2012-11-18 71 views
3

在這種情況下,「myMethod()」會在「doSomething()」之前還是之後執行?最後在java中返回

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(); 
     } 
    } 
} 
+1

你爲什麼不說自己去查加'System.out.println'陳述你的方法! ? – akuhn

+0

或者還有更好的方法:爲什麼不通過調試代碼並查看調用堆棧來檢查它? –

回答

6

myMethod()doSomething因爲doSomething執行barMethod它的值返回給調用者後執行

將得到的值計算並準備返回,然後finally塊將全部執行,只有調用者才能繼續;這是當myMethod被調用。

0

DoSomething的()myMethod的()之前

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的」 後崩潰