我在接受采访时被问到这个问题:finally
阻止在JavaScript中不执行。
答案 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...
...然后它会使您的浏览器完全无法使用(所以不要复制+粘贴)。