在使用文件、IO流、數據庫連接等不會自動釋放的資源時,應該在使用完畢後馬上將其關閉。關閉資源的代碼try...catch...finally的finally內執行,否則可能造成資源無法釋放。
案例:
FileWriter fileWriter = new FileWriter("");
fileWriter.append(product.toString());
// 如果append()拋出異常,close()方法就不會執行,造成IO流長時間無法釋放
fileWriter.close();
FileWriter fileWriter = null;
try
{
fileWriter = new FileWriter("");
fileWriter.append(product.toString());
}
catch (IOException e)
{
...
}
finally
{
// 不管前面是否發生異常,finally中的代碼一定會執行
if (fileWriter != null)
{
try
{
fileWriter.close();
}
catch (IOException e)