javascript finallyでのreturnは最優先されるので使わない方がいい

javascript finallyでのreturnは最優先されるので使わない方がいい

javascriptで、try-catch-finall構文で必ず実行されるfinallyでのreturnは最優先されることを確認するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 103.0.5060.134

finallyでreturn実行

finallyでreturnを実行すると、try内やcatch内で記述しているreturnは実行されません。

const hoge = () => {

  try {

    console.log(foo); // 定義してない変数なためエラー

  } catch (e) {

    console.log(e.message)
    return "catchからreturn";

  } finally {

    console.log("finallyが実行されました。");
    return "finallyからreturn";

  }

}

console.log(
  hoge() // 
);

実行結果から確認できるように、catch内で記述したreturnは実行されません。

try内でも同様です。

const hoge = () => {

  try {
    let foo = "mebee";
    console.log(foo); // 定義してない変数なためエラー
    return "tryからreturn";

  } catch (e) {

    console.log(e.message)
    return "catchからreturn";

  } finally {

    console.log("finallyが実行されました。");
    return "finallyからreturn";

  }

}

console.log(
  hoge()
);

実行結果