Programming/Java
[Java] try-with-resources 구문을 사용하여 할당한 자원을 자동으로 해제하기
cbw1030
2021. 8. 1. 22:05
반응형
jdk 1.7부터 할당한 자원을 자동으로 해제할 수 있는 try-with-resources 구문이 추가됐다.
try-with-resources를 사용하지 않는 경우에는 finally 부분에 작성을 하여 자원을 해제했다.
// try-with-resources 구문을 사용하지 않은 경우
FileInputStream fis = null;
try {
fis = new FileInputStream("file.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fis != null) {
fis.close();
}
}
try-with-resources 구문을 사용하면 깔끔하게 작성이 가능하다.
try (
FileInputStream fis2 = new FileInputStream("file.txt");
) {
// do something
} catch (IOException e) {
// 에러처리
}
try 옆에 괄호 안에서 자원을 할당하면 해당 자원은 블록 수행 이후 자원이 자동으로 해제된다.
저 문법만 사용하면 무조건 자동으로 해제되는 것이 아니라 AutoCloseable 인터페이스를 구현한 클래스만 해당이 된다.
FileInputStream은 InputStream 추상 클래스를 상속받고 있다.
InputStream은 Closeable 인터페이스를 구현하고 있다.
Closeable 인터페이스는 AutoCloseable 인터페이스를 상속받고 있다.
따라서 위 예제에서 사용한 FileInputStream은 자동으로 자원이 해제될 수 있는 것이다.
반응형