Java 1.7具有try-catch资源,该资源本身可处理可关闭资源。意味着,当执行try-catch块时,资源将自动关闭。
我对try-catch块如何结束感到困惑。考虑以下两个方案。
情况1:
void function()
{
try (closable)
{
doSomething();
}
catch (Exception)
{}
//at this point, the closable variable is closed
//by try-catch statement. No issues and it's clear.
}
情况2:
void function()
{
try (closable)
{
doSomething();
return;
}
catch (Exception)
{}
//we never reached to this point, and this what
//makes me think.Is closable really closed before
//return statement or do we need to manually call
//closable.close() before returning?
}
谢谢。
最佳答案
在返回语句之前,closable是否真的关闭了吗?还是需要在返回之前手动调用closable.close()?
是的,它会自动为您调用。
为了自己验证这一点,您可以在closeable
对象的close()
方法中放置一个断点,然后在debug
模式下运行应用程序。在执行return;
之后,您应该立即看到JVM在close()
方法中停止其执行。