好吧,我一直在做如下(變量名稱已更改):關閉一個Java的FileInputStream
FileInputStream fis = null;
try
{
fis = new FileInputStream(file);
... process ...
}
catch (IOException e)
{
... handle error ...
}
finally
{
if (fis != null)
fis.close();
}
最近,我開始使用FindBugs的,這表明我沒有正確關閉流。我決定查看是否有任何可以通過finally {}塊來完成,然後我看到,哦,是的,close()可以拋出IOException。人們應該在這裏做什麼? Java庫引發了太多的檢查異常。
`fis`不可能在你測試的時候爲空。它可以在缺失的`finally`塊中爲null,在那裏你應該測試它並關閉它。但是自引入「試用資源」語法以來,這個問題已經過時了。 – EJP 2015-04-28 01:14:58
我修改了相應的代碼,以免人們誤導。 – 2015-04-28 14:23:57