1. try...catch的作用大家都应该特别熟悉,在try的代码块中的代码一但出现了异常,catch就可以对它进行捕获,或者try主动通过throw抛出一个异常catch来接送。finally就js中异步操作中的回调函数,回调函数是当满足某个条件之后才会执行,而finally是当try...catch执行完之后才会执行。
示例代码:
运行结果:
结果分析:demo01函数的执行的时候当try没有抛出异常的时候finally会在try执行完之后就执行finally代码块中的代码,而如果抛出了异常的活finally会在catch之后才会执行。
2. 在finally中如果出现了return语句的话,那么它会阻止掉try中的返回值和函数的返回值。
示例代码
运行结果:
从运行结果中可以看出当try中出现返回值的时候,fianlly中同时也出现了返回值的话fianlly会阻止它们返回。
3.当finally中出现了异常或者通过throw抛出异常的话,finally里后面的代码将不会被执行,就像一条短路语句一样阻止掉了后面代码的执行。
示例代码:
运行结果:
从运行的结果中看到当fianlly如果抛出了一个异常,在它后面代码块中的内容将无法执行,但是如图所示try中的代码块中的代码照样可以执行。
好了可以总结一下:
- finally的执行时机是在try...catch之后运行,就像一个回调函数在满足某个条件之后才执行一样。
- finally中如果使用了return的话就会让当前函数中其他的代码块中的return语句不会执行。
- 在finally中如果使用了异常操作的话会阻finally语句后面的代码执行,前面的代码可以照常执行。