[Effective Java 3/e] 아이템 9 - try-finally보다는 try-with-resources를 사용하라
아이템 9 - try-finally보다는 try-with-resources를 사용하라
자원이 둘 이상이면 try-finally 방식은 너무 지저분하다
static void copy(String src, String dst) throws IOException {
InputStream in = new FileInputStream(src);
try {
OutputStream out = new FileOutputStream(dst);
try {
byte[] buf = new byte[BUFFER_SIZE];
int n;
while ((n = in.read[buf] >= 0))
out.write(buf, 0, n);
} finally {
out.close();
}
} finally {
in.close();
}
}
복수의 자원을 처리하는 try-with-resoruces - 짧고 매혹적이다
static void copy(String src, String dst) throws IOException {
try (InputStream in = new FileInputStream(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);
}
}
try-with-resoruces를 catch 절과 함께 쓰는 모습
static String firstLineOfFile (String path, String defaultVal) {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
} catch (IOException e) {
return defaultVal;
}
}