2020-04-08

Javaのfinallyはreturnの直前に実行されない。

ググるJavaのfinallyはreturnの直前に実行され「る」という記事を見かけてしまったので、んなわけ無いだろうって、

直感的には return 文が評価されたあとに実行されるという肌感覚だったが、確証がないので動かしてみた。

try {
  return sub();
} finally {
  System.out.println(42);
}

もし記事の言うようにreturnの直前にfinallyが実行されるなら、

上記みたいなコードではsubが実行される前に、「42」が表示されるはずだが、subの中身が実行されたあとにfinallyは実行される。

なので、finally は return の直前に実行されるのではなくreturn の右辺が評価され終えた直後に実行されます

まぁ普通の結果ですね。

javaレベル言語でさえまだまだこういう雑い記事Google検索トップに来るんですね

  • まあそうやろなあ (function(){ try{ return (function(){ console.log("return"); })(); }finally{ console.log("finally"); }})()// 出力// return// finally

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん