JavaScript中的Try...catch...finally

JS中,try后面只要跟着一个catchfinally,有下面3中形式的用法:

  1. try…catch
  2. try…finally
  3. try…catch…finally

这里需要注意的是finally
无论在任何情况下,finally中的代码都会执行,哪怕是try...catch中抛出了异常!
比如:

1
2
3
4
5
6
7
8
9
10
11
try {
console.log(1);
throw new Error('aa');
console.log(6);
} catch (err) {
console.log(2);
throw new Error('aa');
} finally {
console.log(3);
}
console.log(4);

该代码段中的console的输出结果是:

1
2
3
1
2
3

try内部的console.log(6)和外部的console.log(4)都不会执行,但是finally中的会执行。
有了这样的特性,我们可以在finally中做一些无论什么情况下都需要做的事情,比如关闭I/O连接等等。