在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 以下代碼try catch兩個(gè)代碼塊為什么都執(zhí)行了?

以下代碼try catch兩個(gè)代碼塊為什么都執(zhí)行了?

下面這段js執(zhí)行時(shí),是先alert打印2,然后再alert 1. 也就是說(shuō)先執(zhí)行了finally,然后再return的,這樣的執(zhí)行順序有沒(méi)有什么應(yīng)用場(chǎng)景?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
function Test() {
    var a = {b: 1}
    try {
        return a.b;
    } finally {
        a={b:2}
        alert('還執(zhí)行'+a.b)
    }
}
alert(Test())
</script>
</body>
</html>
回答
編輯回答
浪婳
為什么先執(zhí)行finally再執(zhí)行try里面的return呢?

這個(gè)本身就是try...catch...finally結(jié)構(gòu)的執(zhí)行過(guò)程。

你可以這樣理解,finally是在當(dāng)前函數(shù)里面的,屬于當(dāng)前函數(shù)的范圍,如果try里面真的返回了,則執(zhí)行流程就已經(jīng)跳出當(dāng)前函數(shù)的范圍了,那么當(dāng)前函數(shù)里面的代碼就不可能再執(zhí)行到了。所以finally需要在try中的return真正返回之前執(zhí)行,然后再返回。

2017年3月18日 20:59
編輯回答
不二心

你的代碼里并沒(méi)有 catch語(yǔ)句,而是finally語(yǔ)句,finally語(yǔ)句的定義你可以查一查,一定會(huì)執(zhí)行的

2018年3月13日 15:31
編輯回答
裸橙

使用場(chǎng)景詳解:https://blog.csdn.net/aitangy...
其實(shí)也就是說(shuō)自己處理不了當(dāng)前的異常,或者不用處理的情況下,就不catch,直接往外拋;但是有一些清理工作需要做的話(huà)就在finally里執(zhí)行,因?yàn)閠ry{}里的返回語(yǔ)句一定會(huì)在finally執(zhí)行之后才會(huì)執(zhí)行的(如果在finally寫(xiě)了return ,那就直接退出方法了,try里面的不會(huì)再執(zhí)行);

2017年12月23日 00:31
編輯回答
有你在

完整的結(jié)構(gòu)是

try{
... //預(yù)期執(zhí)行的,一般不會(huì)安排返回操作
}catch{
... //捕獲錯(cuò)誤執(zhí)行的,如果沒(méi)有捕獲錯(cuò)誤就不執(zhí)行
}finally{
... //無(wú)論是否捕獲錯(cuò)誤都會(huì)執(zhí)行的(除非try中有返回語(yǔ)句),一般用作一些清理工作
}
2017年12月22日 03:56
編輯回答
夏夕

我以為我瞎了,看了五遍沒(méi)找到catch在哪

2017年8月2日 14:48