我需要讀取屬性文件。我爲此使用了BufferedReader和FileReader。我在嘗試部分初始化BufferedReader並在try部分初始化之前將其初始化爲null。最後,我正在關閉讀者。在這一點上,我收到了標題中提到的錯誤。Findbugs錯誤 - 錯誤:br保證在異常路徑上取消引用
完整的代碼如下
public void getPageTitleProperties() throws IOException
{
BufferedReader br = null;
String lhs, rhs;
try
{
br = new BufferedReader(new FileReader("res" + File.separator + "pagetitle.properties"));
String line;
while ((line = br.readLine()) != null)
{
String [] keyvalue = line.split("=");
lhs = keyvalue[0];
rhs = keyvalue[1];
expectedTitles.put(lhs, rhs);
}
}
catch (RuntimeException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
br.close();
}
System.out.println("Expected URLs and Titles");
for (String url : expectedTitles.keySet())
{
System.out.println(url + ":" + expectedTitles.get(url));
}
}
的錯誤細節 -
我怎樣才能擺脫這種錯誤的?我嘗試初始化非空的BR,在try塊中初始化它(這不起作用,因爲變量不能在finally塊中解析:))。在一些類似的帖子中,人們已經提到這可能是錯誤的否定。我也參考了 - http://findbugs.sourceforge.net/bugDescriptions.html#NP_GUARANTEED_DEREF,但不知道如何擺脫這個錯誤。
當Jon Skeet發佈了答案時,沒有人敢發佈新答案 – Baby
對不起。但是沒有任何一種建議的方法會讓這個bug出錯,並且仍然會給出相同的錯誤。如果我有JDK 7.0,那有什麼區別嗎? – Sumod
@Sumod:所有這些答案*真的*應該解決這個問題。最後一種方法(試用資源)是最乾淨的,所以我建議你把重點放在那個方面。用一個新的部分來編輯你的問題,顯示你的代碼,以及你得到的確切錯誤(用你正在顯示的確切代碼,而不是其他包含你未顯示的代碼的代碼)。 –