try with resources 질문
91
작성한 질문수 20
SessionV6 클래스에서
try with resources 코드에 finally를 추가해서 close() 메서드를 호출해 직접 닫아주었는데, 그러면 try with resources를 사용해서 자동으로 close 되는 것과 finally에 명시적으로 작성해 준 close()가 총 두 번 실행되는 게 맞나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. gnstjrdlsla님.
질문하신 내용은 트라이 위드 리소스(try-with-resources) 구문과 finally 블록의 상호작용에 관한 것입니다. Java에서 try-with-resources 구문은 자동으로 자원을 해제(close)해 주는 기능을 제공합니다. 따라서 try-with-resources를 사용할 때는 finally 블록 안에 직접 close 메서드를 호출할 필요가 없습니다.
예를 들어, 다음과 같이 코드를 작성했다고 가정해봅니다:
try (BufferedReader reader = new BufferedReader(new FileReader("test.txt"))) {
// 파일 읽기 작업 수행
} finally {
// 다음과 같은 close 호출이 필요하지 않습니다
// reader.close();
}
위의 코드에서, try-with-resources가 사용되기 때문에 블록이 끝날 때 BufferedReader가 자동으로 close됩니다. 따라서 finally 블록에서 직접 reader.close()를 호출하면 자원이 두 번 닫히면서 예상치 못한 예외가 발생할 수 있습니다.
관련된 질문으로, try-with-resources 관련된 유용한 정보를 담은 게시글들을 추천해드리겠습니다:
- 자원 관리와 try-with-resources에 대한 설명
- 꼭 close()를 해줘야 하나요?
이 링크들은 try-with-resources의 작동 원리와 예외 처리에 대한 추가적인 정보를 제공할 것입니다.
질문에 대한 답변이 되었길 바라며, 더 궁금한 점이 있으시다면 언제든지 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
RequestHandler 버전 간 process() 파라미터 차이 질문
0
73
2
리플렉션 default
0
52
1
그럼 SOURCE나 CLASS는 어떤 경우에 사용하나요?
0
77
2
네트워크 프로그램 자원종료 Socket 정리 시 closed 사용 문의
0
100
2
FileInputStream의 transferTo 사용 시 Buffer 문의
0
64
1
오타 제보 드립니다
0
74
2
강좌 복습 팁이 있으신 분들 공유해주시면 감사하겠습니다.
0
106
1
16강 질문있습니다.
0
49
1
한글이 깨질 떄 어떻게 해야 하나요?
0
78
1
자원 정리시 에러가 발생 했을 때 메모리 상황 및 실무에서 로그 확인 방법
0
91
1
인텔리제이에서 네모(스탑버튼) 누르는 것의 의미
-1
67
1
강의 섹션 8: 네드워크 -프로그램 3부분 10:45 오타?
0
87
2
제대로 이해한게 맞나 궁금합니다
0
78
1
File,Files 강의 2번쨰 Files 07:30 에 tmep 파일들을 다 지운건가요 ?
0
63
1
/.well-known/appspecific/com.chrome.devtools.json 에러에 대해서
0
619
1
Socket 자원을 정리할때 stream 을 정리하지 않는 이유가 궁금합니다.
0
89
1
클라이언트 강제종료시 오류 메세지
0
106
2
고급 2편에는 퀴즈가 없네요?
0
98
1
55. 네트워크 프로그램5 - 자원정리2 질문
0
67
1
클라이언트가 FIN과 함께 보내는 ACK는 무엇에 대한건가요?
1
105
2
BufferedInputStream이 1바이트씩 조회해도 성능이 좋은 이유
0
79
1
오타제보
0
63
2
문자 집합 호환성 여부를 판단할 때
0
52
1
utf-8, char
0
53
1





