如果最后要做的就是关闭游标,则第二种形式是正确的。如果openCursor()失败,您将 永远不会 关闭光标。该变量的值甚至都不会被设置。
正如其他人所暗示的,警告是,如果您要进行其他初始化,而该初始化需要自己进行清理,那么从逻辑上讲,必须进入finally {}并相应地更改范围。尽管在这种情况下我会主张进行重组。
底线:按照书面形式,第一个版本不必要地复杂。第二个版本是正确的。
编辑:结合我的其他评论为后代…
第一个示例似乎无害,因为它所做的只是添加一堆不必要的代码。(完全不需要,如果还不清楚的话。)但是,在经典的“更多代码意味着更多潜在错误”的方式中,有一个隐藏的陷阱。
如果出于某种原因“ //做某事”代码无意中清除了游标变量,那么您将无声地泄漏游标,而至少在获得NullPointerException之前。由于额外的代码绝对没有任何用处,因此完全不需要额外的风险。