8

実行によって例外が発生しない場合、制御は finally ブロックに移動します。では、try ブロックの return ステートメントは JVM によって無視されていますか? . または、例外が発生した場合、制御は catch ブロックに移動し、return ステートメントは無視され、制御は finally ブロックに移動し、finally から戻ります

  public class Helper {
     public int showException(int a, int b){

           try{
           int c=a/b;
           return c;
           } catch(Exception e){
                return 0;
           } finally{
               return 3;
             }
     }
  }
4

5 に答える 5

4

ブロックは inまたは inのfinallyどちらに入力しても毎回実行されるため、それがfinallyと呼ばれる理由だと思います:)trycatch

Javaドキュメントから

try ブロックが終了すると、finally ブロックが常に実行されます。これにより、予期しない例外が発生した場合でも、finally ブロックが実行されます。

注:次の場合にのみ実行されません

try または catch コードの実行中に JVM が終了すると、finally ブロックが実行されない場合があります。同様に、try または catch コードを実行しているスレッドが中断または強制終了された場合、アプリケーション全体が続行されても、finally ブロックが実行されない可能性があります。

于 2013-03-25T14:09:57.210 に答える
2

設計上、finallyブロック内のリターンは常に優先されます。

于 2013-03-25T14:09:59.387 に答える
0

try ブロックが終了すると、finally ブロックが常に実行されます。これにより、予期しない例外が発生した場合でも、finally ブロックが実行されます。しかし、finally は例外処理以外にも役立ちます。プログラマは、return、continue、break によってクリーンアップ コードが誤ってバイパスされるのを防ぐことができます。例外が予想されない場合でも、最終ブロックにクリーンアップ コードを配置することは常に良い方法です。

詳細はこちら

于 2013-03-25T14:12:46.543 に答える
0

try catch ブロックが実行されるかどうかにかかわらず、finally ブロックは常に実行されます

于 2013-03-25T14:11:40.160 に答える
-1

最終的には、catch ブロックが呼び出されたかどうかに関係なく、最後に呼び出されます。おそらく、より多くのドキュメントを読みたいと思うでしょう。 MSDN Try Catch 最後に

于 2013-03-25T14:09:58.493 に答える