[Effective Java] 아이템 9 - try-finally보다는 try-with-resources를 사용하라

HyeBin, Park·2022년 5월 8일
0

Effective Java Study

목록 보기
7/20
post-thumbnail

아이템 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);
        }
}
  • 읽기 수월하고 문제를 진단하기에 좋다.
  • 꼭 회수해야하는 자원을 다룰때는 꼭 사용해야함

0개의 댓글