簡體   English   中英

catch塊中返回語句會發生什么

[英]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;
} 

它僅輸出35從不打印因為后finally塊返回值。

最后它總是執行最后一次。 所以它會覆蓋你擁有的任何其他回報。 因此,您的方法返回false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM