我在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());
Run Code Online (Sandbox Code Playgroud)
我输出为假.我理解最后总是执行不管try catch的结果但是catch中返回语句会发生什么.
gur*_*372 26
我理解最后总是执行不管try catch的结果但是catch中返回语句会发生什么.
return语句中catch只有在将被执行catch到达块,也就是说,如果没有抛出一个错误.
例如
function example() {
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
}
}
Run Code Online (Sandbox Code Playgroud)
example()将返回,2因为之前抛出了错误return 1.
但是如果有一个finally块并且这个finally块有一个return语句,那么这return将覆盖catchreturn语句.
例如
function example() {
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
return 3;
}
}
Run Code Online (Sandbox Code Playgroud)
现在example()将回归3.
在您的示例中,finally块之后有一个return语句.该声明永远不会被执行.
尝试
function example() {
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
return 3;
}
console.log(5)
return 4;
}
Run Code Online (Sandbox Code Playgroud)
它只输出3,5因为在finally返回块值后从未打印过.
| 归档时间: |
|
| 查看次数: |
11540 次 |
| 最近记录: |