Javaのfinallyはreturnの直前に実行されない。
ググると Javaのfinallyはreturnの直前に実行され「る」という記事を見かけてしまったので、んなわけ無いだろうって、
直感的には return 文が評価されたあとに実行されるという肌感覚だったが、確証がないので動かしてみた。
try { return sub(); } finally { System.out.println(42); }
もし記事の言うようにreturnの直前にfinallyが実行されるなら、
上記みたいなコードではsubが実行される前に、「42」が表示されるはずだが、subの中身が実行されたあとにfinallyは実行される。
なので、finally は return の直前に実行されるのではなくreturn の右辺が評価され終えた直後に実行されます。
まぁ普通の結果ですね。
まあそうやろなあ (function(){ try{ return (function(){ console.log("return"); })(); }finally{ console.log("finally"); }})()// 出力// return// finally