gpt4 book ai didi

javascript - catch block 中的 return 语句发生了什么

转载 作者:可可西里 更新时间:2023-11-01 01:58:22 25 4
gpt4 key购买 nike

我已经在 javascript 中尝试过这段代码

function abc(){
try{
console.log(0);
throw "is empty";}
catch(err){
console.log(1);
return true;
}
finally{return false;}
return(4);
}
console.log(abc());

我得到的输出是错误的。我明白 Finally 总是执行,不管 try catch 的结果如何,但是 catch 中的 return 语句会发生什么。

最佳答案

I understand Finally always execute regardless of result of try catchbut what happen to return statement in catch .

return statement in catch 将仅在到达 catch block 时执行,即如果抛出错误。

例如

function example() { 
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
}
}

example() 将返回 2,因为在 return 1 之前抛出了错误。

但是如果有一个 finally block 并且这个 finally block 有一个 return 语句那么这个 return 将覆盖 catch 返回语句。

例如

function example() { 
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
return 3;
}
}

现在 example() 将返回 3

在您的示例中,在 finally block 之后有一个 return 语句。该语句永远不会被执行。

尝试

function example() { 
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
return 3;
}
console.log(5)
return 4;
}

它只输出35 永远不会打印,因为在 finally block 值返回之后。

关于javascript - catch block 中的 return 语句发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38050857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com