请参考以下代码片段(将多余的部分切除以突出问题所在):
FindBugs抱怨“方法不能在所有路径上释放锁定”。这是假阳性吗?如果没有,该如何解决?
try{
someLock.lock();
//do something
} finally{
if (someLock.isLocked())
someLock.unlock();
}
最佳答案
如果isLocked()
扔东西,则您不会解锁。
我认为isLocked
不会引发异常,但是锁定时必须解锁,测试没有意义。那么,为什么不使用the javadoc中描述的标准模式:
someLock.lock();
try{
//do something
} finally{
someLock.unlock();
}
所以我说
这是错误的肯定,因为您的代码无法解锁
在您应该根据建议修复代码的意义上说,这是一个真正的肯定。