我已经看到了两种获取和处理资源的方法.或者:
Resource resource = getResource(); try { /* do something with resource */ } finally { resource.close(); }
要么:
Resource resource = null; try { resource = getResource(); /* do something with resource */ } finally { if (resource != null) resource.close(); }
我想知道哪种风格更可取.第一个避免if
条件,而第二个(我假设)在赋值之后但在进入try
块之前处理线程中止的情况.这些风格有什么其他优点和缺点?我最好使用哪一个?
在C#中,只需使用using语句:
using (Resource resource = GetResource()) { /* Do something */ }
在分配和进入try块之间没有发生Java线程中止的风险 - 中止只发生在休眠和等待期间.编辑:我实际上无法在规范中找到这个,这有点令人担忧.嗯.