finally在try...catch中的一些特性。

180 阅读2分钟

1. try...catch的作用大家都应该特别熟悉,在try的代码块中的代码一但出现了异常,catch就可以对它进行捕获,或者try主动通过throw抛出一个异常catch来接送。finally就js中异步操作中的回调函数,回调函数是当满足某个条件之后才会执行,而finally是当try...catch执行完之后才会执行。

示例代码: code.png

运行结果:

截屏2021-12-17 上午11.07.35.png

结果分析:demo01函数的执行的时候当try没有抛出异常的时候finally会在try执行完之后就执行finally代码块中的代码,而如果抛出了异常的活finally会在catch之后才会执行。

2. 在finally中如果出现了return语句的话,那么它会阻止掉try中的返回值和函数的返回值。

示例代码 code.png

运行结果:

截屏2021-12-17 上午11.17.15.png

从运行结果中可以看出当try中出现返回值的时候,fianlly中同时也出现了返回值的话fianlly会阻止它们返回。

3.当finally中出现了异常或者通过throw抛出异常的话,finally里后面的代码将不会被执行,就像一条短路语句一样阻止掉了后面代码的执行。

示例代码:

code.png

运行结果:

截屏2021-12-17 上午11.29.08.png

从运行的结果中看到当fianlly如果抛出了一个异常,在它后面代码块中的内容将无法执行,但是如图所示try中的代码块中的代码照样可以执行。

好了可以总结一下:

  1. finally的执行时机是在try...catch之后运行,就像一个回调函数在满足某个条件之后才执行一样。
  2. finally中如果使用了return的话就会让当前函数中其他的代码块中的return语句不会执行。
  3. 在finally中如果使用了异常操作的话会阻finally语句后面的代码执行,前面的代码可以照常执行。