다음과 같은 코드가 있습니다.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()이 모든 예외 경로에서 잠금을 해제하지 않는다"고 불평하고 try-finally에서 shutdown = true;
행을 래핑해야한다고하지만 내가 볼 수 있듯이 이것이 나빠질 수있는 방법은 없습니다.
잘못 되었습니까? 아니면 거짓입니까?
Firebug는 버그 설명에서 지정하는 관용구를 사용하지 않으면 파이어 버그가 불만을 제기하는 것처럼 보이며 finally 블록에서 잠금을 해제합니다. 그들은 코드가 잠금 블록에 얼마나 간단한 지 신경 쓰지 않는 것 같습니다. – Riggy
더 나은 질문은 try/finally 블록을 사용하지 않는 이유는 무엇입니까? 그런 식으로 코드가 미래에 리팩토링되고 사소한 과제 이상이되면 버그가 발생하지 않습니다. – jtahlborn
@jtahlborn하지만 그 질문은 지루하다. :) try-finally를 추가 할 것이 틀림 없다. 그러나 나는 그것이 정말로 필요한지, 그리고 그렇다면 왜 필요로하는지 아직도 알고 싶다. –