34
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【javascript】try-catch-finally句内のreturnについて

Posted at

参考

参考ページはjavaで確認されていますが、javascriptでも同じなのか気になったので、試してみましたm(_ _)m

#trycatchのなかでリターンした場合

function sample_1() {
    try{
        fail(); // fail is not defined
    }catch(err){
        console.log("catchの実行")
        return "catchからのリターンです。";
    }finally{
        console.log("finallyが実行されました。");
    }
}
console.log(sample_1());

image.png

function sample_2() {
    try{
        console.log("tryの実行")
        return "tryからのリターンです。";
    }catch(err){
        console.log("catchの実行")
    }finally{
        console.log("finallyが実行されました。");
    }
}
console.log(sample_2());

image.png

参考ページと同じように、trycatchのなかでリターンしても、finallyが実行されることが確認できました。


finallyでリターンしてしまうと、catchでもリターンしていた場合に、例外時にcatchのリターンが実行されないので、
javascriptでもfinallyでリターンするのはやめたほうが良さそうです。

#catchでさらにthrowした場合

function sample_3() {
    try{
        fail(); // fail is not defined
    }catch(err){
        console.log("catchの実行")
        throw err
    }finally{
        console.log("finallyが実行されました。");
    }
}
sample_3();

image.png

この場合でもfinallyが実行されることを確認できました。


34
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?