[英]what happen to return statement in catch block
我在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());
我輸出為假。 我理解最后總是執行不管try catch的結果但是catch中返回語句會發生什么。
我理解最后總是執行不管try catch的結果但是catch中返回語句會發生什么。
只有在達到catch
塊時才會執行catch
return語句 ,即拋出錯誤。
例如
function example() {
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
}
}
example()
將返回2
因為在return 1
之前拋出了錯誤。
但是如果有一個finally
塊並且這個finally
塊有一個return
語句,那么這個return
將覆蓋catch
return語句。
例如
function example() {
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
return 3;
}
}
現在example()
將返回3
。
在您的示例中,finally塊之后有一個return語句。 該聲明永遠不會被執行。
嘗試
function example() {
try {
throw new Error()
return 1;
}
catch(e) {
return 2;
}
finally {
return 3;
}
console.log(5)
return 4;
}
它僅輸出3
, 5
從不打印因為后finally
塊返回值。
最后它總是執行最后一次。 所以它會覆蓋你擁有的任何其他回報。 因此,您的方法返回false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.