Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

자동 리소스 닫기 try-with-resources 본문

프로그래밍 언어/자바

자동 리소스 닫기 try-with-resources

야식은진리다 2020. 2. 26. 01:22

기존에 입출력 스트림이나 소켓 등을 사용할 때 아래와 같이 close() 메서드를 호출해서 안전하게 리소스를 닫아 주어야 했다. finally 블록에서 다시 try-catch를 사용하므로 꽤나 복잡하게 생겼다.

FileInputStream stream = null;
try {
	stream = new FileInputStream("file.txt");
} catch(Exception e) {
	...
} finally {
	try {
    	stream.close();
    } catch(Exception e) {
  		...
    }
}

하지만 자바 7에서 추가된 try-with-resources를 사용하면 다음과 같이 간단하게 사용할 수 있다. 단 사용하기 위해서 조건이 있는데 리소스 객체가 java.lang.AutoCloseable인터페이스를 구현하고 있어야 한다.

try(FileInputStream stream = new FileInputStream("file.txt") {
	
} catch (Exception e) {

}

close() 메서드를 직접 호출하지는 않았지만, try블록이 예외 없이 실행이 되었거나 도중에 예외가 발생하면 자동으로 close() 메서드가 호출된다. try블록에서 예외가 발생하면 우선 close()로 리소스를 닫고 catch 블록을 실행한다. 만약 복수 새의 리소스를 사용한다면 아래와 같이 작성한다.

try(FileInputStream stream1 = new FileInputStream("file.txt")
FileInputStream stream2 = new FileInputStream("filename.txt")) 
{
	
} catch (Exception e) {

}

 

'프로그래밍 언어 > 자바' 카테고리의 다른 글

정규표현식 정리 표  (0) 2020.04.01
예외 떠넘기기  (0) 2020.02.28
로컬 클래스에서 외부 클래스로의 사용제한  (0) 2020.02.20
익명 구현 객체  (0) 2020.02.17
객체 타입 확인 instanceof  (0) 2020.02.15