아이템 9 - try-finally보다는 try-with-resources를 사용하라
🎲 try-finally
static String firstLineOfFile(String path) throws IOException {
BufferdReader br = new BufferedReader(new FileReader(path));
try{
return br.readLine();
} finally {
br.close();
}
}
- 예외 발생이나 메서드에서 반환되는 경우를 포함해서 자원이 제대로 닫힘을 보장하는 수단으로 사용했다.
- 하지만 finally에서도 예외는 터질 수 있다.
- 그렇게 된다면 첫번째 예외에 대한 정보는 두번째 예외에서 묻히게 된다.
📟 try-with-resources
static void copy(String src, String dst) throws IOException {
try (InputStream in = new FileInptStream(src);
OutputStream out = new FileOutputStream(dst)) {
byte[] buf = new byte[BUFFER_SIZE];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
}
}
- 읽기 수월하고 문제를 진단하기에 좋다.
- 꼭 회수해야하는 자원을 다룰때는 꼭 사용해야함