在 Java IO 操作中,常見如下寫法:
FileReader fr = null;
try {
fr = new FileReader("d:java\\TestFileReader.java");
// 讀取操作...
} catch (FileNotFoundException e) {
// 處理例外...
} finally {
if (fr != null) fr.close();
}
初學者會疑惑:為什麼不直接寫 FileReader fr; 而是要賦值 null?
Java 區域變數必須經過明確初始化才能使用。若在 try 區塊中拋出例外,導致 fr 未被賦值,後續 finally 區塊引用 fr 時會產生「variable might not have been initialized」編譯錯誤。預先指定 null 可確保變數處於確定狀態,編譯器允許後續判斷 fr != null 後再關閉資源。
try (FileReader fr = new FileReader("path")) {
// 讀取操作
} catch (IOException e) {
// 處理例外
}null 初始化是安全且標準的做法。