try...finally

236 阅读1分钟
  1. finally在最后执行
  2. finally中有异常抛出的时候,函数会终止,try中如果有return,则return的值会被抛弃
  3. function fun () {
     try {
       return 42
     } finally {
       throw '错误'
     }
    }
    console.log(fun())
    // Uncaught 错误
    

  4. finally的中的return值会覆盖try 或 cathch中的return值

    function fun1 () {
         try {
               return 42
         } finally {
       
         }
    }
    
    function fun2 () {
         try {
               return 42
         } finally {
               return 43
         }
    }
    
    fun1() // 42
    fun2() // 43