最终块中的所有内容总是(几乎)执行,那么将代码包含在其中还是不关闭代码有什么区别?
无论是否存在异常,finally块中的代码都将被执行。当涉及某些家政功能时,这非常方便,您需要始终像关闭连接一样运行。
现在,我 猜 您的问题是为什么要这样做:
try { doSomething(); } catch { catchSomething(); } finally { alwaysDoThis(); }
当您可以这样做时:
try { doSomething(); } catch { catchSomething(); } alwaysDoThis();
答案是很多时候catch语句中的代码要么抛出异常,要么脱离当前函数。对于后面的代码,“ alwaysDoThis();” 如果catch语句中的代码发出返回或引发新异常,则调用将不会执行。