我有這樣的代碼:UL_UNRELEASED_LOCK_EXCEPTION_PATH可能的FindBugs誤報?
public class Thingy {
private final Lock lock = new ReentrantLock();
private boolean shutdown;
public void shutdown() {
lock.lock();
shutdown = true;
lock.unlock();
}
}
而且FindBugs的抱怨說,「Thingy.shutdown()不能在所有異常路徑釋放鎖」,我應該換行shutdown = true;
線在一個try-finally,但作爲就我所見,這是不可能的。
我錯了還是這是假陽性?
它看起來像螢火蟲會抱怨,除非你使用成語他們在錯誤描述指定,解開包裹在finally塊。他們似乎並不在意你的代碼在鎖定塊中有多簡單。 – Riggy 2011-03-23 17:33:42
更好的問題,爲什麼不使用try/finally塊?這樣當代碼在將來被重構並且變得不僅僅是一個簡單的任務時,你就不會有錯誤。 – jtahlborn 2011-03-23 17:53:02
@jtahlborn但這個問題很無聊:)我確定我會添加try-finally,但我仍然想知道它是否真的需要,如果是這樣,爲什麼。 – 2011-03-23 18:33:02