likes
comments
collection
share

前端异常处理机制-补充

作者站长头像
站长
· 阅读数 5

try-catch-finally机制中return的执行时机

前言

try-catch-finally机制中return行为

问题1:try-catch-finally中在try或者catch中执行了return语句,finally依然会执行嘛?

前端异常处理机制-补充 前端异常处理机制-补充

答案:try()、catch()函数中有return动作,finally语句依然会执行。

问题2:如果在finally中也有返回值嘛? 前端异常处理机制-补充 前端异常处理机制-补充

答案:finally语句中的return动作会覆盖try()、catch()函数中的return动作。

为什么会有这种“反直觉”行为

try-catch-finally代码块中不能使用break、continue来跳出循环或switch语句。如果想要停止try-catch语句块,可以使用return或者throw。由此可见,在try-catch-finally机制中finally中的内容是必须保证执行的。当try-catch模块中执行了return语句产生了非normal记录,且在finally模块中也产生了非normal记录时,会将finally中产生的记录作为整个结构的结果。

最后,对于target字段,唯一作用就是配合标签语句配合跳出多层循环。标签语句是JavaScript中的一种特性,任务语句前均可加上冒号,类似于注释、标记作用。 前端异常处理机制-补充

参考

winter老师的重学前端