Discuss / JavaScript / 为什么先打印出finally

为什么先打印出finally

Topic source

Aragakkki

#1 Created at ... [Delete] [Delete and Lock User]

老师,我不是很懂,try。。。catch。。。finally语句执行的时候为什么先打印出finally,而不是r1 = undefined?

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]
...
} finally {
    console.log('finally');
}
console.log('r1 = ' + r1); // r1应为undefined
console.log('r2 = ' + r2); // r2应为undefined

从上往下执行先打印r1 = undefined你觉得合理吗?

try是你不确定或者确定会发生错误的地方(可能有问题的语句) catch(e)是指try中的语句确实发生了错误你要做处理的地方 e表示错误信息 可以输出查看 finaly是指如果try中发生了错误 而catch中也没有处理的时候就走finaly

try{ console.log(aaa)//aaa是一个变量 上面没有定义 所以一定会出错 走到catch方法 }catch (e) { console.log(e)//这里没有对错误进行处理 只是输出了错误信息 aaa is not defined }finally { console.log('111')//然后进入到finally } console台的输出信息应该先是catch中的错误信息 然后是finally的处理输出


  • 1

Reply