Closed okhee closed 2 years ago
기존 try-finally
static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } }
문제 : br.readLine() 에서 예외가 발생하고, br.close()에서도 예외가 발생한다면, IOException으로 나오는 예외는 br.close()의 예외밖에 없음. 최초에 발생한 br.readLine() 예외는 알 수 없음
try-with-resources (Java7 에서 추가)
static String firstLineOfFile(String path) throws IOException { try (BufferedReader br = new BufferedReader(new FileReader(path))) { return br.readLine(); }
두개 이상의 리소스는 다음과 같이 사용 가능
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-finally
문제 : br.readLine() 에서 예외가 발생하고, br.close()에서도 예외가 발생한다면, IOException으로 나오는 예외는 br.close()의 예외밖에 없음. 최초에 발생한 br.readLine() 예외는 알 수 없음
try-with-resources (Java7 에서 추가)
두개 이상의 리소스는 다음과 같이 사용 가능