Backend/Java

try-with-resources

간지나제 2021. 6. 8. 15:03

Java 7에서 try-with-resources 구문을 소개했다.
이 구문은 try블럭을 시작함과 동시에 자원을 할당하며 try블럭이 끝나면 자동으로 자원을 해제한다.

우리는 보통 try-catch-finally에서 finally에 자원을 해제하곤 했다.

FileInputStream fis;
try {
    fis = new FileInputStream(“file.txt”);
} 
catch(Exception e) {
    ...
}
finally {
    fis.close();
}

Java 7부터는 자동으로 자원을 해제해주는 방법이 생겼다.

try(FileInputStream fis = new FileInputStream(“file.txt”)) {
    // do something
} 
catch(Exception e) {}

물론 try 안에 두 개 이상을 선언하는 것도 가능하다.

try(FileInputStream fis = new FileInputStream(“file.txt”);
    BufferedInputStream br = new BufferedInputStream(fis)
    )
{
    // do something
}

그러나 모든 자원을 자동으로 해제시켜주는 것은 아니다.
해당 클래스가 AutoCloseable 이라는 인터페이스를 구현한 클래스이어야만 한다.

package java.lang;

public interface AutoCloseable {
    void close() throws Exception;
}

따라서, 임의로 Autocloseable을 구현하여 class를 만드는 경우에도 try-with-resources를 사용할 수 있다.

'Backend > Java' 카테고리의 다른 글

직렬화  (0) 2021.06.12
추상클래스와 인터페이스  (0) 2021.06.11
Generics  (0) 2021.04.27
Java 버전별 특징  (0) 2021.04.27
Stream  (0) 2021.04.27