close

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

01.png  

arrow
arrow

    RX1226 發表在 痞客邦 留言(0) 人氣()