IT 관련 책 정리 및 후기/Java Effective E3

[Item 9] try-finally보다는 try-with-resources를 사용하라

JUN0126 2022. 5. 21. 01:47

자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야 하는 자원들이 많은데, 자원을 닫기 위해서는 try-finally 보다

try-with-resources를 사용하여 닫아야 한다.

 -> 자원이 둘 이상이면 try-finally 방식은 너무 지저분하다

 -> finally 구문에서도 예외가 발생할 수 있고 이전에 try 구문에서도 예외가 발생할 수 있으므로 나중에 나온 예외가 

     이전 예외를 덮어버려서 어떠한 예외에서 에러가 발생했는지 파악하기 어렵다.

 -> try-with-resources를 사용할 경우 { } 안에 있는 예외만 발생하게 되어 예외를 확실히 알 수 있다.

 

전통적인 자원 닫힘 보장 수단

 - try-finally

 - 예외가 발생하거나 메서드에서 반환되는 경우를 포함

 

try-with-resources 란?

-  Java7 이후 만들어진 try 구문에 자원 객체를 전달하고 try 코드 블록이 끝나면 자동으로 자원을 종료(close) 해주는 기능 

- try 구문 ()안에 들어올 수 있는건 AutoCloseable 인터페이스를 구현한 구현체만 가능하다