2011-03-16 3 views
1

可能性の重複:
In Java, does return trump finally?returnの後にある場合、内部のステートメントは最終的に実行されますか?

それがreturn文の後であれば最終的に文はまだ実行されます場合は疑問に思いますか?

+0

コード例はありますか?それで、質問はあまりにもあまりにもぼんやりしているようです。 – Riduidel

+1

そしてここでイエス・ノー・質問をするのではなく、単にそれをテストすることを妨げるのは何ですか? –

答えて

14

はい、それは唯一の例外は、あなたreturn

public static void foo() { 
     try { 
      return; 
     } finally { 
      System.out.println("Finally.."); 
     } 
    } 

    public static void main(String[] args) { 
     foo(); 
    } 

が出力場合

+3

これは通常あなたがしたくないものです:-) –

4

そうは最終的にでも実行されますtryブロックでSystem.exit(1)あります

Finally.. 
0

はい、最終的に実行されますreturn声明の後ですが、

+1

参考:http://stackoverflow.com/questions/2824746/finally-and-return –

0

はい、もちろんです。 finallyステートメントは、実行がtryステートメントになると、どのような場合でも実行されるように設計されています。

1

return文が関連するtryブロックの前にない場合は、

戻りステートメントが関連付けられたtryブロック内にある場合は、はい。

public void foo(int x) 
{ 
    if (x < 0) 
     return; // finally block won't be executed for negative values 

    System.out.println("This message is never printed for negative input values"); 
    try 
    { 
     System.out.println("Do something here"); 
     return;  
    } 
    finally 
    { 
     System.out.println("This message is always printed as long as input is >= 0"); 
    } 
} 
+0

「finally」は、 tryブロックします。 –

0

finallyブロックは、我々がSystem.exit(int)Runtime.getRuntime().exit(int)を呼び出すことにより、JVMを終了した場合にのみ失敗します。

+0

'Runtime.halt()'、あまりにも:-) –

0

他の回答の上に、finallyブロックにリターンがある場合、リターン後のステートメントは実行されません。

上記のスニペットでは、「In finally」が表示され、「Will not get print」は表示されません。

関連する問題