프로그래밍/Back end

[Back end] Java try-with-resources

Reference M1 2021. 2. 8. 17:53

 

Java 7 이후부터 리소스가 닫히도록 보장하는 try-with-resources 문을 도입했다. 이 구문은 try catch finally 보다 선호되어야 한다.

 

Noncompliant Code Example

FileReader fr = null;
BufferedReader br = null;

try {

    fr = new FileReader(fileName);
    br = new BufferedReader(fr);
    
    return br.readLine();
    
} catch (...) {

} finally {

    if (br != null) {
        try {
            br.close();
        } catch(IOException e){...}
    }
    
    if (fr != null ) {
        try {
            br.close();
        } catch(IOException e){...}
    }
}

 

Compliant Solution

try (
    FileReader fr = new FileReader(fileName);
    BufferedReader br = new BufferedReader(fr)
) {
  return br.readLine();
}
catch (...) {}

// or

try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
  return br.readLine();
}
catch (...) {}