Io流關閉問題

錯誤案例

常見的一種寫法,針對每個catch都進行一次io流關閉。在關閉過程也未進行io流的空值判斷。

    try{
	URL url = new URL("http://pm.china.alibaba.com/" + memberId);
	URLConnection conn = url.openConnection();
	reader.close();
    } catch (MalformedURLException e) {
    } catch (IOException e) {
	try {
		reader.close();
	} catch (IOException e1) {
	}
    }

錯誤分析

使用catch異常的方式關閉io流,需要注意catch的分支必須得寫全,而且需要針對空值,流關閉異常進行處理,導致代碼不是很優雅。 也很容易造成io流沒有正常關閉,出現open too many files的情況。

正確用法

1. 在finnally 中關閉io流,避免catch分支的遺漏 2. 使用一些utils關閉io流

    try{
	URL url = new URL("http://pm.china.alibaba.com/);
	URLConnection conn = url.openConnection();
    } catch (Exception e) {
	// do log xxxx
    } finally {
	Ioutils.closeQuietly(reader)
    }

發佈了26 篇原創文章 · 獲贊 2 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章