본문 바로가기

공부 기록/Java

[이펙티브 자바 3/E] 아이템9 - try-finally보다는 try-with-resources를 사용하라

- try-with-resources 구조를 사용하려면 해당 자원이 AutoCloseable 인터페이스를 구현해야 한다.


try-finally 구조를 사용한 예

static String firstLineOfFile(String path) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader(path));
    try {
        return br.readLine();
    } finally {
        br.close();
    }
}

 

try-with-resources 구조를 사용한 예

static String firstLineOfFile(String path) throws IOException {
    try (BufferedReader br = new BufferedReader(new FileReader(path))) {
        return br.readLine();
    }
}

- try-with-resources 버전이 짧고 읽기 수월할 뿐 아니라 문제를 진단하기도 훨씬 좋다.

- try-with-resources에서드 catch 절을 쓸 수 있다.


[핵심 정리]

꼭 회수해야 하는 자원을 다룰 때는 try-with-resources를 사용하자. 코드는 더 짧고 분명해지고, 만들어지는 예외 정보도 훨씬 유용하다. 또한 정확하고 쉽게 자원을 회수할 수 있다.