try-catch-finally的执行顺序

Posted 赏花赏景赏时光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try-catch-finally的执行顺序相关的知识,希望对你有一定的参考价值。

下面说下在javascript中try-catch-finally的执行顺序

1、不管有没有出现异常,都会执行finally中的代码

2、不管try   catch中有没有return,都会执行finally中的代码

3、若try或者catch中有return,finally中没有return,则一定是执行了try、catch中的语句,接着执行finally中的语句,最后才会执行try、catch中的return

4、若try、catch没有return,finally中有return,则一定是执行了try、catch中的语句,接着执行finally中的语句,最后执行finally中的return

5、若try、catch有return,finally中有return,则一定是执行了try、catch中的语句,接着执行finally中的语句,最后执行finally中的return

即finally是一定会执行,在try、catch语句执行之后、return语句执行之前执行;若finally没有return,则用try、catch的return;若finally有return,不管try、catch是否有return,都用finally的return

 

下面看一下demo:

<!doctype html>
<body>
  <script>
    test1()
    //  输出结果
    // try
    // catch

    test2()
    // 输出结果
    // try
    // error
    // catch

    console.log(test3())
    // 输出结果
    // try
    // finally
    // try fragment

    console.log(test4())
    // 输出结果
    // try
    // finally
    // finally fragment

    console.log(test5())
    // 输出结果
    // try
    // finally
    // try fragment

    console.log(test6())
    // 输出结果
    // try
    // error
    // finally
    // catch fragment

    console.log(test7())
    // 输出结果
    // try
    // error
    // finally
    // finally fragment

    console.log(test8())
    // 输出结果
    // try
    // error
    // finally
    // finally fragment

    // 没有return
    function test1() 
      try 
        console.log('try')
       finally 
        console.log('catch')
      
    

    function test2() 
      try 
        console.log('try')
        throw new Error('error')
       catch (error) 
        console.log(error.message)
       finally 
        console.log('finally')
      
    

    // 有return
    function test3() 
      try 
        console.log('try')
        return 'try fragment'
       finally 
        console.log('finally')
      
    

    function test4() 
      try 
        console.log('try')
       finally 
        console.log('finally')
        return 'finally fragment'
      
    

    function test5() 
      try 
        console.log('try')
        return 'try fragment'
       finally 
        console.log('finally')
        return 'finally fragment'
      
    

    function test6() 
      try 
        console.log('try')
        throw new Error('error')
       catch (error) 
        console.log(error.message)
        return 'catch fragment'
       finally 
        console.log('finally')
      
    

    function test7() 
      try 
        console.log('try')
        throw new Error('error')
       catch (error) 
        console.log(error.message)
       finally 
        console.log('finally')
        return 'finally fragment'
      
    

    function test8() 
      try 
        console.log('try')
        throw new Error('error')
       catch (error) 
        console.log(error.message)
        return 'catch fragment'
       finally 
        console.log('finally')
        return 'finally fragment'
      
    
  </script>
</body>
</html>

 

以上是关于try-catch-finally的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

try-catch-finally执行顺序

try-catch-finally的执行顺序

try-catch-finally的执行顺序

请简述JAVA中 try-catch-finally 语句的执行过程 简单明了 好的话 加分(曹苇提问)

try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

try-catch-finally 和 return 是怎么执行的?