java로 작업이 되어 있는 오픈소스를 분석하던 도중 신기한 코드를 보았습니다.
바로 try문 안에 소괄호가 있는 것인데요!
제가 알고 있는 try문은 바로 실행문으로 넘어가는 것인데, 이것이 바로 try-with-resources라고 하네요.
이는 무엇인지 궁금하여, 알아보게 되었습니다.
1. try-with-resources
try-with-resource 구문은 Java 7에서 도입된 기능으로, 리소스를 명시적으로 닫아주는 것이 아니라, 자동으로 닫아주는 구조를 제공한다고 합니다.
이를 통해 코드가 더 간결하고 안전해지며, 리소스를 제대로 해제하지 않아 발생할 수 있는 메모리 누수 or 다른 문제를 방지할 수 있습니다.
2. 기본 문법
그러면 직접 사용해 보기 전에, 문법이 어떻게 이루어져 있는지 확인해 봅시다.
이 구문은 AutoCloseable 인터페이스를 구현하는 객체를 사용합니다.
이 객체는 try 블록이 끝나면, 자동으로 닫힙니다.
※ 이 때, ResourceType은 AutoCloseable을 구현하는 리소스 클래스입니다.
try (ResourceType resource = new ResourceType()) {
// resource를 사용한 코드
} catch (ExceptionType e) {
// 예외 처리 코드
}
3. 예시
저는 이 구문을 텍스트를 읽어주는 BufferedReader 기능에 대입하였습니다!
다음과 같이 입력하여 사용했습니다.
try (BufferedReader reader = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
log.error({}, e.toString);
}
이렇게 하면, try 코드 블록이 끝난 후, 자동으로 close()메서드가 호출되어 자원이 해제 되기에 불피요한 메모리 누수 or 파일 핸들 누수를 피할 수 있습니다.
4. 장점 및 주의점
try-with-resource의 가장 큰 장점은 자원을 자동으로 안전하게 닫아주기 때문에, 자원을 직접 닫는 코드를 작성할 필요가 없어 코드의 안정성을 높일 수 있어요.
또한, 예외 처리를 간소화하여 코드의 복잡성을 줄이고, 개발자가 실제 로직에 집중할 수 있게 해줍니다.
하지만, 이 구문은 AutoCloseable 인터페이스를 구현한 자원에만 사용할 수 있으며, 여러 자원을 동시에 사용할 경우, 각 자원을 별도의 try-with-resource 문으로 관리하는 것이 좋아요.
5. 정리하며
지금까지 try-with-resources에 대해 알아보았습니다.
자원을 자동으로 관리하고 싶다면, 이 구문을 사용하는 것이 좋을 것 같아요!
참고
F-Lab 님의 자바의 try-with-resources 이해하기
망나니개발자 님의 [Java] try-with-resources란? try-with-resources 사용법 예시와 try-with-resources를 사용해야 하는 이유
'Programming Language > Java' 카테고리의 다른 글
AES를 활용해 암호화 및 복호화하기 (0) | 2024.09.03 |
---|---|
암호화 및 복호화 모듈 - 대칭 키 암호화 (0) | 2024.09.03 |
오류가 발생한 엑셀 csv 파일의 열 찾기 (0) | 2024.07.30 |
BuffredReader - 엑셀 불러오기 (3) | 2024.07.23 |
네트워크(Network) (0) | 2022.07.25 |