Java7提供了一個Try-with-resources編譯器蜜糖Compiler sugar語法
來解決每次在try catch在開啟資源後要再finally中關閉資源時的再度拋出例外
那冗長不可讀的程式碼, 而如果使用的資源有實作AutoCloseable的介面
則可以使用Try-with-resources語法來簡化
舉例來說
static void readFile(){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(""));
br.readLine();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null)
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
可以改成在try後面加上(需要自動關閉的資源)
try(BufferedReader br = new BufferedReader(new FileReader(""))) {
br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
而如果同時有多個資源要關閉
則是使用;後面加上第二個資源
而後面的資源會被先關閉
try(BufferedReader br = new BufferedReader(new FileReader(""));
BufferedReader br2 = new BufferedReader(new FileReader(""));) {
br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
1. 官網https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html