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 和 return 是怎么执行的?
try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?