Findbug가
는 보장 실행되는 경우에 값이 시점에서 널 있다는 것을 예외로 성명 또는 지점이 있음을 나타내고, 그리고 그 역 참조가 보장되는 값 (런타임 예외를 포함하는 순방향 경로 제외).
가능한 시나리오/유스 케이스는 다음과 같습니다.
1. 분기에 코드가 존재하고 분기에서 객체를 초기화하고 해당 객체에 null 체크없이 액세스하는 것으로 가정합니다. user3227602 코드를 보여줍니다
으로, 당신은 NULL 개체로 sessionFactory에 객체를 선언하고 시도 - 캐치 마침내 블록에 초기화했다.
초기화하기 전에 예외가 발생하면 (일부 처리로 인해) 흐름이 catch-finally 블록으로 들어오는 시나리오를 상상해보십시오. 따라서 sessionFactory는 여전히 NULL 객체로만 선언되었습니다. 따라서 null 체크이 좋습니다.
2.) 일부 문장 (if-elseif-else)이 코드에 존재하고 해당 블록 (block, elseif 블록 또는 else 블록 인 경우)에서 객체를 초기화하고 널 체크). 조건 1의 결과가 거짓 다음 sessionFactory의 객체 인 경우
if(condition1)
{
//blah blah
sessionFactory = new Configuration().configure().buildSessionFactory();
//blah blah
}
else
{
//blah blah
}
if (!sessionFactory.isClosed()) {
session.close();
sessionFactory.close();
}
initilize 않을 것입니다. 이렇게하려면 NULL 확인이 필요합니다.
전체 코드를 게시하십시오. http://findbugs.sourceforge.net/bugDescriptions.html#NP_GUARANTEED_DEREF – m4rtin