【发布时间】:2019-06-27 11:01:15
【问题描述】:
在 PHP、JS 等中,不管是否抛出异常,finally {} 都是在 try/catch 之后执行的。但这不只是try/catch之后所有代码的功能吗?
两个 sn-ps 的行为应该完全相同:
try {
throwException();
} catch () {
} finally () {
executeMe();
}
和
try {
throwException();
} catch () {
}
executeMe();
【问题讨论】:
-
如果你重新投掷或根本没有抓到怎么办?
-
在你的第二个 sn-p 中,如果你在你的
returning 你的try或你的catch块中,executeMe()不会被执行。如果您在catch块中重新抛出异常(或另一个异常),它也不会到达。使用finally,将到达。 -
所以即使我跳出函数并返回,最终{} 也会被解析?然后是延迟返回,还是最终在返回之后执行且没有方法/对象上下文?
-
无论何时退出 try/catch 块,最终都会在块之前的上下文中执行,即使在返回时也是如此
-
这是针对java语言的,但行为是一样的:stackoverflow.com/questions/3861522/…
标签: javascript php