자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야 하는 자원들이 많은데, 자원을 닫기 위해서는 try-finally 보다
try-with-resources를 사용하여 닫아야 한다.
-> 자원이 둘 이상이면 try-finally 방식은 너무 지저분하다
-> finally 구문에서도 예외가 발생할 수 있고 이전에 try 구문에서도 예외가 발생할 수 있으므로 나중에 나온 예외가
이전 예외를 덮어버려서 어떠한 예외에서 에러가 발생했는지 파악하기 어렵다.
-> try-with-resources를 사용할 경우 { } 안에 있는 예외만 발생하게 되어 예외를 확실히 알 수 있다.
전통적인 자원 닫힘 보장 수단
- try-finally
- 예외가 발생하거나 메서드에서 반환되는 경우를 포함
try-with-resources 란?
- Java7 이후 만들어진 try 구문에 자원 객체를 전달하고 try 코드 블록이 끝나면 자동으로 자원을 종료(close) 해주는 기능
- try 구문 ()안에 들어올 수 있는건 AutoCloseable 인터페이스를 구현한 구현체만 가능하다
'IT 관련 책 정리 및 후기 > Java Effective E3' 카테고리의 다른 글
[Item 8] finalizer와 cleaner 사용을 피하라 (0) | 2022.05.19 |
---|---|
[Item 7] 다 쓴 객체 참조를 해제하라 (0) | 2022.05.19 |
[ITEM 6] 불필요한 객체 생성을 피해라 (0) | 2022.05.19 |
[ITEM 5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2022.05.17 |
[ITEM 4] 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2022.05.17 |