请问以下两个代码有什么区别? try 的 finally 有什么使用场景?
try {
throw 'x'
} catch {
} finally {
console.log(1)
}
try {
throw 'x'
} catch {
}
console.log(1)
请问以下两个代码有什么区别? try 的 finally 有什么使用场景?
try {
throw 'x'
} catch {
} finally {
console.log(1)
}
try {
throw 'x'
} catch {
}
console.log(1)
try finally机制是 异常捕获处理中一种很必要的机制,能保证无论是否出现异常,后续状态都是稳定的,可以保证程序不被异常完全打断。
scherman的例子是一种情况,只说到了执行可能,其实还有很多特性例子,比如在try中尝试获取一些参数,如果没有,本来是会异常出错的而导致相应变量没有赋值,则可以用finally来保证相应变量至少有值(比如默认值)。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
你这样写当然没有区别,不过如果在try里面有return,在catch里面有return或者throw的话,如果有finally,则finally代码仍然被执行,如果没有finally,把代码写在try/catch之外,则这些代码不会被执行。
如果要总结的话,就是finally里面的代码在离开try/catch的时候被调用,不管是顺序执行离开,还是return离开,throw离开,只要离开了try/catch,都会调用finally里面的代码。