코딩마을방범대
JAVA의 try-with-resources 본문
728x90
try-with-resources 란?
- AutoCloseable 인터페이스를 사용하는 자원을 자동으로 닫아주는 시스템
- 자바 7부터 지원하는 기능
AutoCloseable 인터페이스를 구현한 자원
AutoCloseable 인터페이스에는 close() 메소드가 정의되어 있으며,
try-with-resources 구문이 종료될 때 자동으로 이 메소드가 호출된다.
파일 입출력 관련 클래스 FileInputStream, FileOutputStream, FileReader, FileWriter 등 데이터베이스 관련 클래스 Connection, Statement, ResultSet 등 네트워크 관련 클래스 Socket, ServerSocket, DatagramSocket 등 기타 리소스 관리 클래스 InputStream, OutputStream, Reader, Writer 등
try-with-resouces의 장점
- 코드 간결성 향상: try-catch-finally 구문에 비해 코드가 간결해집니다.
- 리소스 누수 방지: close() 메서드를 호출하지 않는 실수를 방지할 수 있습니다.
- 예외 처리 용이: 예외 처리 로직이 간단해집니다.
try-with-resources 사용 예제
try-with-resources를 사용하지 않고 직접 close()를 선언하는 코드로 작성할 경우 아래와 같다.
try 지역 변수가 아닌 바깥에 선언하여 finally에서 종료해주는 방식이다.
이럴 경우 가시성이 떨어질 뿐 아니라, 오류가 발생할 수 있는 위험이 있다.
FileReader fr = null;
try {
fr = new FileReader("path/to/file.txt");
int i;
while ((i = fr.read()) != -1) {
System.out.print((char) i);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
try-with-resources를 활용하려면 자원을 try 괄호 안에 선언해주면 된다.
여러 자원을 동시에 사용하는 경우 각 자원을 별도의 try-with-resouces 문으로 관리하는 것이 좋다.
(자원 간의 의존성으로 인한 문제를 방지할 수 있으므로)
try (FileReader fr = new FileReader("path/to/file.txt")) {
int i;
while ((i = fr.read()) != -1) {
System.out.print((char) i);
}
} catch (IOException e) {
e.printStackTrace();
}
참고사이트
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
소나큐브 코드스멜 테스트 결과 메시지 분석 (0) | 2024.06.27 |
---|---|
직렬화(Serialization) 란? (0) | 2024.06.27 |
SonarQube 에 GitLab&Local 연결해서 사용하기 (0) | 2024.06.17 |
WAR 파일을 이용해 Intellij 디버깅 모드로 실행시키기 (0) | 2024.05.08 |
자바를 통해 서버에 파일 업로드&다운로드 하기 (0) | 2024.01.23 |