在哪种情况下,finally块不会在客户端JavaScript中执行?

时间:2016-01-25 05:25:52

标签: javascript try-catch

我在接受采访时被问到这个问题:finally阻止在JavaScript中不执行。

1 个答案:

答案 0 :(得分:3)

finally块将始终执行,无论try...catch的结果如何(即无论是否抛出和/或处理异常)。因此,finally无法执行的唯一方法是代码永远不会到达它(例如,如果代码中存在无限循环)。如果程序完全被中断/中止(例如,如果用户关闭浏览器端JavasScript的窗口,或者解释器因服务器端JavaScript被中断),您也可以避免使用finally

举一个具体的例子(不要在浏览器中尝试这个):

var neverExits = function() {
  var x = 0;
  while (true) {
    x += 1;
  }
};

var example = function () {
   try {
     console.log('Entering try...'); // printed
     neverExits();
     console.log('Leaving try...');  // not printed
   } finally {
     console.log('Entering finally...'); // not printed
   }
};

上面的例子,如果执行,将打印出来:

Entering try...

...然后它会使您的浏览器完全无法使用(所以不要复制+粘贴)。