try-catch-finally的执行顺序
Posted 赏花赏景赏时光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try-catch-finally的执行顺序相关的知识,希望对你有一定的参考价值。
下面说下在javascript中try-catch-finally的执行顺序
1、不管有没有出现异常,都会执行finally中的代码
2、不管try catch中有没有return,都会执行finally中的代码
3、若try或者catch中有return,finally中没有return,则一定是执行了try、catch中的语句,接着执行finally中的语句,最后才会执行try、catch中的return
4、若try、catch没有return,finally中有return,则一定是执行了try、catch中的语句,接着执行finally中的语句,最后执行finally中的return
5、若try、catch有return,finally中有return,则一定是执行了try、catch中的语句,接着执行finally中的语句,最后执行finally中的return
即finally是一定会执行,在try、catch语句执行之后、return语句执行之前执行;若finally没有return,则用try、catch的return;若finally有return,不管try、catch是否有return,都用finally的return
下面看一下demo:
<!doctype html>
<body>
<script>
test1()
// 输出结果
// try
// catch
test2()
// 输出结果
// try
// error
// catch
console.log(test3())
// 输出结果
// try
// finally
// try fragment
console.log(test4())
// 输出结果
// try
// finally
// finally fragment
console.log(test5())
// 输出结果
// try
// finally
// try fragment
console.log(test6())
// 输出结果
// try
// error
// finally
// catch fragment
console.log(test7())
// 输出结果
// try
// error
// finally
// finally fragment
console.log(test8())
// 输出结果
// try
// error
// finally
// finally fragment
// 没有return
function test1()
try
console.log('try')
finally
console.log('catch')
function test2()
try
console.log('try')
throw new Error('error')
catch (error)
console.log(error.message)
finally
console.log('finally')
// 有return
function test3()
try
console.log('try')
return 'try fragment'
finally
console.log('finally')
function test4()
try
console.log('try')
finally
console.log('finally')
return 'finally fragment'
function test5()
try
console.log('try')
return 'try fragment'
finally
console.log('finally')
return 'finally fragment'
function test6()
try
console.log('try')
throw new Error('error')
catch (error)
console.log(error.message)
return 'catch fragment'
finally
console.log('finally')
function test7()
try
console.log('try')
throw new Error('error')
catch (error)
console.log(error.message)
finally
console.log('finally')
return 'finally fragment'
function test8()
try
console.log('try')
throw new Error('error')
catch (error)
console.log(error.message)
return 'catch fragment'
finally
console.log('finally')
return 'finally fragment'
</script>
</body>
</html>
以上是关于try-catch-finally的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章
请简述JAVA中 try-catch-finally 语句的执行过程 简单明了 好的话 加分(曹苇提问)
try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?