隨着JDK 6和以下我看到了許多代碼片段與try-finally塊如下。Java嘗試 - 終於設計
private void doSomething() throws IOException {
FileReader reader = null;
try {
reader = new FileReader("someFile");
.....
} finally {
if(reader != null){
reader.close();
}
}
}
爲什麼初始化reader爲null,然後在try塊中分配它。下面的模板會更好(想知道我是否缺少任何東西)?我的理由是...我們避免了最終阻止空檢查,如果讀者未能初始化,那麼我不必做任何事情。
private void doSomething() throws IOException {
FileReader reader = new FileReader("someFile");
try {
.....
} finally {
reader.close();
}
}
不是真的!如果構造函數拋出異常,那麼該方法的其餘部分無論如何都無關緊要。請參閱throws子句? – Stackee007