猿问

try / catch / finally 不是多余的吗?

在 PHP、JS 等中,最后 {} 是在 try/catch 之后执行的,无论是否抛出异常。但这不就是try/catch之后所有代码的功能吗?


这两个片段的行为应该完全相同:


try {

    throwException();

} catch () {

} finally () {

    executeMe();

}


try {

    throwException();

} catch () {

}


executeMe();


偶然的你
浏览 141回答 1
1回答

哈士奇WWW

这些评论加起来是一个很好的答案:在您的第二个代码段中,如果您在 try 或 catch 块中返回,则 executeMe() 不会被执行。如果您在 catch 块中重新抛出异常(或另一个异常),也不会达到它。最后,它将达到。– 海姆770所以即使我跳出函数并返回,最后{} 也会被解析?返回然后延迟,还是在返回之后最终执行并且没有方法/对象上下文?– Zsolt Szilagyi无论何时退出 try/catch 块,finally 都会在块之前的上下文中执行,即使在返回时也是如此 – Aditya Jun
随时随地看视频慕课网APP
我要回答