본문으로 바로가기

try ~ with~ resources문

category Java 2020. 6. 20. 19:38

예외 처리를 할때 보통 try~ catch~ finally 블록을 많이 사용하는데 

fileInputStream의 경우 매번 finally 블록에 close를 해야되는 번거로움이 있습니다.

이것을 해결해 주는 것이 resources문인데

FFileInputStream에 있는 AutoCloseable 인터페이스를 통해 편리하게 구현할 수 있습니다.

 

리소스를 자동으로 해제 하도록 제공해주는 구문
해당 리소스가 AutoCloseable을 구현한 경우 close()를 명시적으로 호출하지 않아도
try{} 블록에서 오픈 된 리소스는 정산 적인 경우나 예외가 발생한 경우 모두 자동으로 close()가 호출 됨
자바 7부터 제공 됨
FileInputStream 의 경우 AutoCloseable을 구현 하고 있음


package com.java.test;

public class AutocloseObj implements AutoCloseable{

	@Override
	public void close() throws Exception {
		System.out.println("리소스가 close() 되었습니다."); 
		
	}

} //AutoCloseable 인터페이스를 상속받아 close 함수를 override 하였다

package com.java.test;

public class AutoCloseTest {

	public static void main(String[] args) {
		try(AutocloseObj obj = new AutocloseObj()){
			throw new Exception();
		}
		catch(Exception e){
			System.out.println(e);
		}
	}

}
// 그 뒤에 메인메서드로 실행 close는 자동으로 구현되기 때문에 finally 블록을 넣지 않았다

 


 자바 9 이전에는 이런 식으로 참조변수를 외부에서 생성해 주고 그 객체를 다시 받아와서 다른참조변수로 실행해야되었지만

자바 9 이후 부터는 외부에서 선언한 객체를 그대로 가져와서 사용할 수 있게 되었다

 

'Java' 카테고리의 다른 글

Effective Java item 2  (0) 2021.01.15
Effective Java item 1  (0) 2020.12.22
템플릿 메서드  (0) 2020.06.17
For 별찍기 2  (0) 2020.06.12
For문 별찍기1  (0) 2020.06.12